2 |
|
// |
3 |
|
// Douglas Thrift |
4 |
|
// |
5 |
< |
// $Id: ScanUtility.cxx,v 1.2 2003/08/17 03:55:39 douglas Exp $ |
5 |
> |
// $Id: ScanUtility.cxx,v 1.4 2003/08/19 08:19:24 douglas Exp $ |
6 |
|
|
7 |
|
#include "ScanUtility.h" |
8 |
|
|
9 |
+ |
ScanUtility::ScanUtility() |
10 |
+ |
{ |
11 |
+ |
number = count++; |
12 |
+ |
utilities.insert(pair<unsigned, ScanUtility*>(number, this)); |
13 |
+ |
title = new char[programName.length() + 16]; |
14 |
+ |
|
15 |
+ |
sprintf(title, "%s - Scan Utility", programName.c_str()); |
16 |
+ |
loadDirs(); |
17 |
+ |
|
18 |
+ |
PROPSHEETPAGE page; |
19 |
+ |
|
20 |
+ |
// start |
21 |
+ |
page.dwSize = sizeof(page); |
22 |
+ |
page.dwFlags = PSP_DEFAULT | PSP_USEHICON | PSP_USETITLE | |
23 |
+ |
PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE; |
24 |
+ |
page.hInstance = gui.instance; |
25 |
+ |
page.pszTemplate = MAKEINTRESOURCE(IDD_SCAN_START); |
26 |
+ |
page.hIcon = gui.icon; |
27 |
+ |
page.pszTitle = title; |
28 |
+ |
page.pfnDlgProc = start; |
29 |
+ |
page.lParam = number; |
30 |
+ |
page.pszHeaderTitle = "Start"; |
31 |
+ |
page.pszHeaderSubTitle = "Change any settings before scanning."; |
32 |
+ |
|
33 |
+ |
wizard[0] = CreatePropertySheetPage(&page); |
34 |
+ |
} |
35 |
+ |
|
36 |
+ |
ScanUtility::~ScanUtility() |
37 |
+ |
{ |
38 |
+ |
utilities.erase(number); |
39 |
+ |
saveDirs(); |
40 |
+ |
|
41 |
+ |
delete [] title; |
42 |
+ |
} |
43 |
+ |
|
44 |
|
void ScanUtility::run(void) |
45 |
|
{ |
46 |
< |
multimap<unsigned, string> clients; |
46 |
> |
PROPSHEETHEADER header; |
47 |
> |
|
48 |
> |
// header |
49 |
> |
header.dwSize = sizeof(header); |
50 |
> |
header.dwFlags = PSH_DEFAULT | PSH_HEADER | PSH_USEICONID | PSH_WIZARD97; |
51 |
> |
header.hwndParent = NULL; |
52 |
> |
header.hInstance = gui.instance; |
53 |
> |
header.pszIcon = MAKEINTRESOURCE(IDI_VTB_ICON); |
54 |
> |
header.nPages = 1; |
55 |
> |
header.nStartPage = 0; |
56 |
> |
header.phpage = wizard; |
57 |
> |
header.pszbmHeader = MAKEINTRESOURCE(IDB_VTB_BMP); |
58 |
> |
|
59 |
> |
PropertySheet(&header); |
60 |
> |
} |
61 |
> |
|
62 |
> |
unsigned ScanUtility::count = 0; |
63 |
> |
map<unsigned, ScanUtility*> ScanUtility::utilities; |
64 |
> |
map<HWND, ScanUtility*> ScanUtility::windows; |
65 |
> |
|
66 |
> |
void ScanUtility::loadDirs(void) |
67 |
> |
{ |
68 |
> |
HKEY key; |
69 |
> |
|
70 |
> |
if (RegOpenKeyEx(HKEY_CURRENT_USER, |
71 |
> |
"Software\\DouglasThrift\\VTBFileUtil2", 0, KEY_READ, &key) == |
72 |
> |
ERROR_SUCCESS) |
73 |
> |
{ |
74 |
> |
DWORD type; |
75 |
> |
BYTE data[MAX_PATH]; |
76 |
> |
DWORD size = MAX_PATH; |
77 |
> |
|
78 |
> |
if (RegQueryValueEx(key, "ScanDir", NULL, &type, data, &size) == |
79 |
> |
ERROR_SUCCESS) |
80 |
> |
{ |
81 |
> |
char* buffer = new char[size]; |
82 |
> |
|
83 |
> |
data[size - 1] = '\0'; |
84 |
> |
|
85 |
> |
switch (type) |
86 |
> |
{ |
87 |
> |
case REG_EXPAND_SZ: |
88 |
> |
sprintf(buffer, "%s", data); |
89 |
> |
ExpandEnvironmentStrings(buffer, scanDir, MAX_PATH); |
90 |
> |
cerr << "scanDir = " << scanDir << "\n"; |
91 |
> |
break; |
92 |
> |
case REG_SZ: |
93 |
> |
sprintf(scanDir, "%s", data); |
94 |
> |
cerr << "scanDir = " << scanDir << "\n"; |
95 |
> |
break; |
96 |
> |
default: |
97 |
> |
setScanDir(); |
98 |
> |
break; |
99 |
> |
} |
100 |
> |
|
101 |
> |
delete [] buffer; |
102 |
> |
} |
103 |
> |
else |
104 |
> |
{ |
105 |
> |
setScanDir(); |
106 |
> |
} |
107 |
> |
|
108 |
> |
size = MAX_PATH; |
109 |
> |
|
110 |
> |
if (RegQueryValueEx(key, "SaveDir", NULL, &type, data, &size) == |
111 |
> |
ERROR_SUCCESS) |
112 |
> |
{ |
113 |
> |
char* buffer = new char[size]; |
114 |
> |
|
115 |
> |
data[size - 1] = '\0'; |
116 |
> |
|
117 |
> |
switch (type) |
118 |
> |
{ |
119 |
> |
case REG_EXPAND_SZ: |
120 |
> |
sprintf(buffer, "%s", data); |
121 |
> |
ExpandEnvironmentStrings(buffer, saveDir, MAX_PATH); |
122 |
> |
cerr << "saveDir = " << saveDir << "\n"; |
123 |
> |
break; |
124 |
> |
case REG_SZ: |
125 |
> |
sprintf(saveDir, "%s", data); |
126 |
> |
cerr << "saveDir = " << saveDir << "\n"; |
127 |
> |
break; |
128 |
> |
default: |
129 |
> |
setSaveDir(); |
130 |
> |
break; |
131 |
> |
} |
132 |
> |
|
133 |
> |
delete [] buffer; |
134 |
> |
} |
135 |
> |
else |
136 |
> |
{ |
137 |
> |
setSaveDir(); |
138 |
> |
} |
139 |
> |
|
140 |
> |
RegCloseKey(key); |
141 |
> |
} |
142 |
> |
else |
143 |
> |
{ |
144 |
> |
setScanDir(); |
145 |
> |
setSaveDir(); |
146 |
> |
} |
147 |
> |
} |
148 |
> |
|
149 |
> |
void ScanUtility::saveDirs(void) |
150 |
> |
{ |
151 |
> |
HKEY key; |
152 |
|
|
153 |
< |
clients.insert(pair<unsigned, string>(12345, "Thrift, Douglas W.")); |
154 |
< |
clients.insert(pair<unsigned, string>(123, "McConica, John")); |
155 |
< |
clients.insert(pair<unsigned, string>(456, "MacDonald, Joe")); |
156 |
< |
clients.insert(pair<unsigned, string>(789, "O'Neil, Paul")); |
157 |
< |
clients.insert(pair<unsigned, string>(100, "Haley, Robert Jr.")); |
158 |
< |
clients.insert(pair<unsigned, string>(99, "Haley, Robert Sr.")); |
159 |
< |
clients.insert(pair<unsigned, string>(567, "Woodburn, Douglas II.")); |
160 |
< |
clients.insert(pair<unsigned, string>(567, "Woodburn, Douglas III.")); |
161 |
< |
clients.insert(pair<unsigned, string>(897, "De Groote, Fred IV.")); |
153 |
> |
if (RegCreateKeyEx(HKEY_CURRENT_USER, |
154 |
> |
"Software\\DouglasThrift\\VTBFileUtil2", 0, NULL, |
155 |
> |
REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &key, NULL) == ERROR_SUCCESS) |
156 |
> |
{ |
157 |
> |
if (RegSetValueEx(key, "ScanDir", 0, REG_SZ, LPBYTE(scanDir), |
158 |
> |
strlen(scanDir) + 1) != ERROR_SUCCESS) |
159 |
> |
{ |
160 |
> |
error(); |
161 |
> |
} |
162 |
> |
|
163 |
> |
if (RegSetValueEx(key, "SaveDir", 0, REG_SZ, LPBYTE(saveDir), |
164 |
> |
strlen(saveDir) + 1) != ERROR_SUCCESS) |
165 |
> |
{ |
166 |
> |
error(); |
167 |
> |
} |
168 |
|
|
169 |
< |
for (multimap<unsigned, string>::iterator itor = clients.begin(); itor != |
170 |
< |
clients.end(); itor++) |
169 |
> |
RegCloseKey(key); |
170 |
> |
} |
171 |
> |
else |
172 |
|
{ |
173 |
< |
IndividualClient client; |
173 |
> |
error(); |
174 |
> |
} |
175 |
> |
} |
176 |
|
|
177 |
< |
client.setNumber(itor->first); |
178 |
< |
client.setName(itor->second); |
179 |
< |
client.setFile(client.getFile()); |
177 |
> |
void ScanUtility::setScanDir(HWND parent) |
178 |
> |
{ |
179 |
> |
sprintf(scanDir, "C:\\ScannedFiles\\"); |
180 |
|
|
181 |
< |
cout << client.getName() << "\n" |
182 |
< |
<< client.getNumber() << "\n"; |
181 |
> |
// |
182 |
> |
} |
183 |
> |
|
184 |
> |
void ScanUtility::setSaveDir(HWND parent) |
185 |
> |
{ |
186 |
> |
sprintf(saveDir, "C:\\ScannedFiles\\Individual2003\\"); |
187 |
> |
|
188 |
> |
// |
189 |
> |
} |
190 |
> |
|
191 |
> |
INT_PTR ScanUtility::start(HWND dialog, UINT msg, WPARAM w, LPARAM l) |
192 |
> |
{ |
193 |
> |
map<HWND, ScanUtility*>::iterator itor = windows.find(dialog); |
194 |
> |
ScanUtility* data = itor->second; |
195 |
> |
|
196 |
> |
switch (msg) |
197 |
> |
{ |
198 |
> |
case WM_INITDIALOG: |
199 |
> |
center(GetParent(dialog)); |
200 |
> |
{ |
201 |
> |
map<unsigned, ScanUtility*>::iterator itor = utilities.find(l); |
202 |
> |
|
203 |
> |
windows.insert(pair<HWND, ScanUtility*>(dialog, itor->second)); |
204 |
> |
} |
205 |
> |
break; |
206 |
> |
case WM_NOTIFY: |
207 |
> |
{ |
208 |
> |
LPNMHDR nm = (LPNMHDR) l; |
209 |
> |
|
210 |
> |
switch (nm->code) |
211 |
> |
{ |
212 |
> |
case PSN_SETACTIVE: |
213 |
> |
PropSheet_SetWizButtons(GetParent(dialog), PSWIZB_NEXT); |
214 |
> |
break; |
215 |
> |
} |
216 |
> |
} |
217 |
> |
case WM_DESTROY: |
218 |
> |
windows.erase(dialog); |
219 |
> |
break; |
220 |
|
} |
221 |
+ |
|
222 |
+ |
return FALSE; |
223 |
|
} |