// Vance Thrift and Biller File Utility 2 // // Douglas Thrift // // $Id: ScanUtility.cxx,v 1.4 2003/08/19 08:19:24 douglas Exp $ #include "ScanUtility.h" ScanUtility::ScanUtility() { number = count++; utilities.insert(pair(number, this)); title = new char[programName.length() + 16]; sprintf(title, "%s - Scan Utility", programName.c_str()); loadDirs(); PROPSHEETPAGE page; // start page.dwSize = sizeof(page); page.dwFlags = PSP_DEFAULT | PSP_USEHICON | PSP_USETITLE | PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE; page.hInstance = gui.instance; page.pszTemplate = MAKEINTRESOURCE(IDD_SCAN_START); page.hIcon = gui.icon; page.pszTitle = title; page.pfnDlgProc = start; page.lParam = number; page.pszHeaderTitle = "Start"; page.pszHeaderSubTitle = "Change any settings before scanning."; wizard[0] = CreatePropertySheetPage(&page); } ScanUtility::~ScanUtility() { utilities.erase(number); saveDirs(); delete [] title; } void ScanUtility::run(void) { PROPSHEETHEADER header; // header header.dwSize = sizeof(header); header.dwFlags = PSH_DEFAULT | PSH_HEADER | PSH_USEICONID | PSH_WIZARD97; header.hwndParent = NULL; header.hInstance = gui.instance; header.pszIcon = MAKEINTRESOURCE(IDI_VTB_ICON); header.nPages = 1; header.nStartPage = 0; header.phpage = wizard; header.pszbmHeader = MAKEINTRESOURCE(IDB_VTB_BMP); PropertySheet(&header); } unsigned ScanUtility::count = 0; map ScanUtility::utilities; map ScanUtility::windows; void ScanUtility::loadDirs(void) { HKEY key; if (RegOpenKeyEx(HKEY_CURRENT_USER, "Software\\DouglasThrift\\VTBFileUtil2", 0, KEY_READ, &key) == ERROR_SUCCESS) { DWORD type; BYTE data[MAX_PATH]; DWORD size = MAX_PATH; if (RegQueryValueEx(key, "ScanDir", NULL, &type, data, &size) == ERROR_SUCCESS) { char* buffer = new char[size]; data[size - 1] = '\0'; switch (type) { case REG_EXPAND_SZ: sprintf(buffer, "%s", data); ExpandEnvironmentStrings(buffer, scanDir, MAX_PATH); cerr << "scanDir = " << scanDir << "\n"; break; case REG_SZ: sprintf(scanDir, "%s", data); cerr << "scanDir = " << scanDir << "\n"; break; default: setScanDir(); break; } delete [] buffer; } else { setScanDir(); } size = MAX_PATH; if (RegQueryValueEx(key, "SaveDir", NULL, &type, data, &size) == ERROR_SUCCESS) { char* buffer = new char[size]; data[size - 1] = '\0'; switch (type) { case REG_EXPAND_SZ: sprintf(buffer, "%s", data); ExpandEnvironmentStrings(buffer, saveDir, MAX_PATH); cerr << "saveDir = " << saveDir << "\n"; break; case REG_SZ: sprintf(saveDir, "%s", data); cerr << "saveDir = " << saveDir << "\n"; break; default: setSaveDir(); break; } delete [] buffer; } else { setSaveDir(); } RegCloseKey(key); } else { setScanDir(); setSaveDir(); } } void ScanUtility::saveDirs(void) { HKEY key; if (RegCreateKeyEx(HKEY_CURRENT_USER, "Software\\DouglasThrift\\VTBFileUtil2", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &key, NULL) == ERROR_SUCCESS) { if (RegSetValueEx(key, "ScanDir", 0, REG_SZ, LPBYTE(scanDir), strlen(scanDir) + 1) != ERROR_SUCCESS) { error(); } if (RegSetValueEx(key, "SaveDir", 0, REG_SZ, LPBYTE(saveDir), strlen(saveDir) + 1) != ERROR_SUCCESS) { error(); } RegCloseKey(key); } else { error(); } } void ScanUtility::setScanDir(HWND parent) { sprintf(scanDir, "C:\\ScannedFiles\\"); // } void ScanUtility::setSaveDir(HWND parent) { sprintf(saveDir, "C:\\ScannedFiles\\Individual2003\\"); // } INT_PTR ScanUtility::start(HWND dialog, UINT msg, WPARAM w, LPARAM l) { map::iterator itor = windows.find(dialog); ScanUtility* data = itor->second; switch (msg) { case WM_INITDIALOG: center(GetParent(dialog)); { map::iterator itor = utilities.find(l); windows.insert(pair(dialog, itor->second)); } break; case WM_NOTIFY: { LPNMHDR nm = (LPNMHDR) l; switch (nm->code) { case PSN_SETACTIVE: PropSheet_SetWizButtons(GetParent(dialog), PSWIZB_NEXT); break; } } case WM_DESTROY: windows.erase(dialog); break; } return FALSE; }