2 |
|
// |
3 |
|
// Douglas Thrift |
4 |
|
// |
5 |
< |
// $Id: ScanUtility.cxx,v 1.3 2003/08/19 04:39:38 douglas Exp $ |
5 |
> |
// $Id: ScanUtility.cxx,v 1.4 2003/08/19 08:19:24 douglas Exp $ |
6 |
|
|
7 |
|
#include "ScanUtility.h" |
8 |
|
|
13 |
|
title = new char[programName.length() + 16]; |
14 |
|
|
15 |
|
sprintf(title, "%s - Scan Utility", programName.c_str()); |
16 |
+ |
loadDirs(); |
17 |
|
|
18 |
|
PROPSHEETPAGE page; |
19 |
|
|
36 |
|
ScanUtility::~ScanUtility() |
37 |
|
{ |
38 |
|
utilities.erase(number); |
39 |
+ |
saveDirs(); |
40 |
+ |
|
41 |
|
delete [] title; |
42 |
|
} |
43 |
|
|
47 |
|
|
48 |
|
// header |
49 |
|
header.dwSize = sizeof(header); |
50 |
< |
header.dwFlags = PSH_DEFAULT | PSH_USEICONID | PSH_WIZARD97; |
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 |
|
} |
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 |
+ |
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 |
+ |
RegCloseKey(key); |
170 |
+ |
} |
171 |
+ |
else |
172 |
+ |
{ |
173 |
+ |
error(); |
174 |
+ |
} |
175 |
+ |
} |
176 |
+ |
|
177 |
+ |
void ScanUtility::setScanDir(HWND parent) |
178 |
+ |
{ |
179 |
+ |
sprintf(scanDir, "C:\\ScannedFiles\\"); |
180 |
+ |
|
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); |
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; |