ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/proj/trunk/SearchInstaller/SearchUninstaller/SearchUninstaller.cpp
Revision: 48
Committed: 2003-02-05T14:47:24-08:00 (22 years, 5 months ago) by douglas
File size: 4850 byte(s)
Log Message:
Initial revision

File Contents

# Content
1 // Douglas Thrift's Search Engine Uninstaller
2 //
3 // Douglas Thrift
4 //
5 // SearchUninstaller.cpp
6
7 #include "SearchUninstaller.h"
8 #include "Worker.h"
9
10 Worker worker;
11 HWND hwndBar;
12 HANDLE thread;
13 DWORD threadId;
14
15 int CALLBACK Options(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
16 int CALLBACK Confirm(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
17 int CALLBACK Progress(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
18 DWORD WINAPI Thread(LPVOID lpParameter);
19 int CALLBACK Complete(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
20
21 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR
22 lpCmdLine, int nCmdShow)
23 {
24 PROPSHEETPAGE psp = {0};
25 HPROPSHEETPAGE ahpsp[4] = {0};
26 PROPSHEETHEADER psh = {0};
27
28 // Options
29 psp.dwSize = sizeof(psp);
30 psp.dwFlags = PSP_DEFAULT|PSP_USEHEADERTITLE|PSP_USEHEADERSUBTITLE;
31 psp.hInstance = hInstance;
32 psp.pszHeaderTitle = MAKEINTRESOURCE(IDS_OPTIONS_TITLE);
33 psp.pszHeaderSubTitle = MAKEINTRESOURCE(IDS_OPTIONS_SUBTITLE);
34 psp.pfnDlgProc = Options;
35 psp.pszTemplate = MAKEINTRESOURCE(IDD_OPTIONS);
36
37 ahpsp[0] = CreatePropertySheetPage(&psp);
38
39 // Confirm
40 psp.pszHeaderTitle = MAKEINTRESOURCE(IDS_CONFIRM_TITLE);
41 psp.pszHeaderSubTitle = MAKEINTRESOURCE(IDS_CONFIRM_SUBTITLE);
42 psp.pfnDlgProc = Confirm;
43 psp.pszTemplate = MAKEINTRESOURCE(IDD_CONFIRM);
44
45 ahpsp[1] = CreatePropertySheetPage(&psp);
46
47 // Progress
48 psp.pszHeaderTitle = MAKEINTRESOURCE(IDS_PROGRESS_TITLE);
49 psp.pszHeaderSubTitle = MAKEINTRESOURCE(IDS_PROGRESS_SUBTITLE);
50 psp.pfnDlgProc = Progress;
51 psp.pszTemplate = MAKEINTRESOURCE(IDD_PROGRESS);
52
53 ahpsp[2] = CreatePropertySheetPage(&psp);
54
55 // Complete
56 psp.pszHeaderTitle = MAKEINTRESOURCE(IDS_COMPLETE_TITLE);
57 psp.pszHeaderSubTitle = MAKEINTRESOURCE(IDS_COMPLETE_SUBTITLE);
58 psp.pfnDlgProc = Complete;
59 psp.pszTemplate = MAKEINTRESOURCE(IDD_COMPLETE);
60
61 ahpsp[3] = CreatePropertySheetPage(&psp);
62
63 // Property Sheet
64 psh.dwSize = sizeof(psh);
65 psh.hInstance = hInstance;
66 psh.hwndParent = NULL;
67 psh.phpage = ahpsp;
68 psh.dwFlags = PSH_WIZARD97|PSH_HEADER;
69 psh.pszbmHeader = MAKEINTRESOURCE(IDB_BANNER_BMP);
70 psh.nStartPage = 0;
71 psh.nPages = 4;
72
73 PropertySheet(&psh);
74
75 return 0;
76 }
77
78
79 int CALLBACK Options(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
80 {
81 switch (uMsg)
82 {
83 case WM_COMMAND:
84 switch(LOWORD (wParam))
85 {
86 case IDC_OPTIONS_TEMPLATE:
87 worker.setTemplates(!worker.getTemplates());
88 break;
89 default:
90 break;
91 }
92 break;
93 case WM_NOTIFY:
94 {
95 LPNMHDR lpnm = (LPNMHDR) lParam;
96
97 switch (lpnm->code)
98 {
99 case PSN_SETACTIVE:
100 PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_NEXT);
101
102 if (worker.getTemplates())
103 {
104 CheckDlgButton(hwndDlg, IDC_OPTIONS_TEMPLATE, BST_CHECKED);
105 }
106 else
107 {
108 CheckDlgButton(hwndDlg, IDC_OPTIONS_TEMPLATE,
109 BST_UNCHECKED);
110 }
111 case PSN_WIZNEXT:
112 //
113 break;
114 case PSN_WIZBACK:
115 //
116 break;
117 case PSN_RESET:
118 //
119 break;
120 default:
121 break;
122 }
123 }
124 break;
125 default:
126 break;
127 }
128
129 return 0;
130 }
131
132 int CALLBACK Confirm(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
133 {
134 switch (uMsg)
135 {
136 case WM_NOTIFY:
137 {
138 LPNMHDR lpnm = (LPNMHDR) lParam;
139
140 switch (lpnm->code)
141 {
142 case PSN_SETACTIVE:
143 PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_BACK |
144 PSWIZB_NEXT);
145 break;
146 case PSN_WIZNEXT:
147 //
148 break;
149 case PSN_WIZBACK:
150 //
151 break;
152 case PSN_RESET:
153 //
154 break;
155 default:
156 break;
157 }
158 }
159 break;
160 default:
161 break;
162 }
163
164 return 0;
165 }
166
167 int CALLBACK Progress(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
168 {
169 switch (uMsg)
170 {
171 case WM_INITDIALOG:
172 {
173 hwndBar = CreateWindowEx(0, PROGRESS_CLASS, (LPSTR) NULL, WS_CHILD
174 | WS_VISIBLE, 45, 33, 412, 24, hwndDlg, (HMENU) 0, NULL, NULL);
175 }
176 break;
177 case WM_NOTIFY:
178 {
179 LPNMHDR lpnm = (LPNMHDR) lParam;
180
181 switch (lpnm->code)
182 {
183 case PSN_SETACTIVE:
184 PropSheet_SetWizButtons(GetParent(hwndDlg), NULL);
185 thread = CreateThread(NULL, 0, Thread, NULL, 0, &threadId);
186 break;
187 case PSN_WIZNEXT:
188 CloseHandle(thread);
189 break;
190 case PSN_WIZBACK:
191 //
192 break;
193 case PSN_RESET:
194 CloseHandle(thread);
195 break;
196 default:
197 break;
198 }
199 }
200 break;
201 default:
202 break;
203 }
204
205 return 0;
206 }
207
208 DWORD WINAPI Thread(LPVOID lpParameter)
209 {
210 worker.work(hwndBar);
211
212 return 0;
213 }
214
215 int CALLBACK Complete(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
216 {
217 switch (uMsg)
218 {
219 case WM_NOTIFY:
220 {
221 LPNMHDR lpnm = (LPNMHDR) lParam;
222
223 switch (lpnm->code)
224 {
225 case PSN_SETACTIVE:
226 PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_FINISH);
227 break;
228 case PSN_WIZFINISH:
229 worker.finish();
230 break;
231 case PSN_WIZBACK:
232 //
233 break;
234 case PSN_RESET:
235 worker.finish();
236 break;
237 default:
238 break;
239 }
240 }
241 break;
242 default:
243 break;
244 }
245
246 return 0;
247 }