1 |
douglas |
260 |
// Vance Thrift and Biller File Utility 2 |
2 |
|
|
// |
3 |
|
|
// Douglas Thrift |
4 |
|
|
// |
5 |
douglas |
269 |
// $Id: ScanUtility.cxx,v 1.4 2003/08/19 08:19:24 douglas Exp $ |
6 |
douglas |
260 |
|
7 |
|
|
#include "ScanUtility.h" |
8 |
douglas |
265 |
|
9 |
douglas |
268 |
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 |
douglas |
269 |
loadDirs(); |
17 |
douglas |
268 |
|
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 |
douglas |
269 |
saveDirs(); |
40 |
|
|
|
41 |
douglas |
268 |
delete [] title; |
42 |
|
|
} |
43 |
|
|
|
44 |
douglas |
265 |
void ScanUtility::run(void) |
45 |
|
|
{ |
46 |
douglas |
268 |
PROPSHEETHEADER header; |
47 |
douglas |
265 |
|
48 |
douglas |
268 |
// header |
49 |
|
|
header.dwSize = sizeof(header); |
50 |
douglas |
269 |
header.dwFlags = PSH_DEFAULT | PSH_HEADER | PSH_USEICONID | PSH_WIZARD97; |
51 |
douglas |
268 |
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 |
douglas |
269 |
header.pszbmHeader = MAKEINTRESOURCE(IDB_VTB_BMP); |
58 |
douglas |
265 |
|
59 |
douglas |
268 |
PropertySheet(&header); |
60 |
|
|
} |
61 |
|
|
|
62 |
|
|
unsigned ScanUtility::count = 0; |
63 |
|
|
map<unsigned, ScanUtility*> ScanUtility::utilities; |
64 |
|
|
map<HWND, ScanUtility*> ScanUtility::windows; |
65 |
|
|
|
66 |
douglas |
269 |
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 |
douglas |
268 |
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 |
douglas |
265 |
{ |
198 |
douglas |
268 |
case WM_INITDIALOG: |
199 |
douglas |
269 |
center(GetParent(dialog)); |
200 |
douglas |
268 |
{ |
201 |
|
|
map<unsigned, ScanUtility*>::iterator itor = utilities.find(l); |
202 |
douglas |
265 |
|
203 |
douglas |
268 |
windows.insert(pair<HWND, ScanUtility*>(dialog, itor->second)); |
204 |
|
|
} |
205 |
|
|
break; |
206 |
douglas |
269 |
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 |
douglas |
268 |
} |
221 |
douglas |
265 |
|
222 |
douglas |
268 |
return FALSE; |
223 |
douglas |
265 |
} |