ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/proj/trunk/VTBFileUtil2/ScanUtility.cxx
Revision: 269
Committed: 2003-08-19T01:19:24-07:00 (21 years, 10 months ago) by douglas
File size: 4339 byte(s)
Log Message:
Hello nurse!

File Contents

# User Rev Content
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 }