2 |
|
// |
3 |
|
// Douglas Thrift |
4 |
|
// |
5 |
< |
// $Id: ScanUtility.cxx,v 1.14 2003/09/03 22:58:38 douglas Exp $ |
5 |
> |
// $Id: ScanUtility.cxx,v 1.18 2003/09/12 04:26:54 douglas Exp $ |
6 |
|
|
7 |
|
#include "ScanUtility.h" |
8 |
|
|
193 |
|
{ |
194 |
|
HKEY key; |
195 |
|
|
196 |
< |
if (RegCreateKeyEx(HKEY_CURRENT_USER, |
196 |
> |
if (LONG code = RegCreateKeyEx(HKEY_CURRENT_USER, |
197 |
|
"Software\\DouglasThrift\\VTBFileUtil2", 0, NULL, |
198 |
|
REG_OPTION_NON_VOLATILE, KEY_QUERY_VALUE | KEY_SET_VALUE, NULL, &key, |
199 |
|
NULL) == ERROR_SUCCESS) |
218 |
|
LPBYTE(scanDir.c_str()), scanDir.length() + 1) != |
219 |
|
ERROR_SUCCESS) |
220 |
|
{ |
221 |
< |
error(); |
221 |
> |
error(NULL, code); |
222 |
|
} |
223 |
|
} |
224 |
|
|
240 |
|
LPBYTE(saveDir.c_str()), saveDir.length() + 1) != |
241 |
|
ERROR_SUCCESS) |
242 |
|
{ |
243 |
< |
error(); |
243 |
> |
error(NULL, code); |
244 |
|
} |
245 |
|
} |
246 |
|
|
248 |
|
} |
249 |
|
else |
250 |
|
{ |
251 |
< |
error(); |
251 |
> |
error(NULL, code); |
252 |
|
} |
253 |
|
} |
254 |
|
|
255 |
|
void ScanUtility::setScanDir(HWND parent) |
256 |
|
{ |
257 |
+ |
char buffer[MAX_PATH]; |
258 |
+ |
|
259 |
+ |
SHGetFolderPath(parent, CSIDL_FLAG_CREATE | CSIDL_DESKTOPDIRECTORY, NULL, |
260 |
+ |
0, buffer); |
261 |
+ |
|
262 |
|
BROWSEINFO info; |
263 |
|
|
264 |
|
info.hwndOwner = parent; |
313 |
|
|
314 |
|
void ScanUtility::setSaveDir(HWND parent) |
315 |
|
{ |
316 |
+ |
char buffer[MAX_PATH]; |
317 |
+ |
|
318 |
+ |
SHGetFolderPath(parent, CSIDL_FLAG_CREATE | CSIDL_DESKTOPDIRECTORY, NULL, |
319 |
+ |
0, buffer); |
320 |
+ |
|
321 |
|
BROWSEINFO info; |
322 |
|
|
323 |
|
info.hwndOwner = parent; |
391 |
|
|
392 |
|
FindClose(finder); |
393 |
|
} |
384 |
– |
else |
385 |
– |
{ |
386 |
– |
error(parent); |
387 |
– |
} |
394 |
|
|
395 |
|
if (scans.empty()) |
396 |
|
{ |
423 |
|
|
424 |
|
char scan[MAX_PATH]; |
425 |
|
|
426 |
< |
sprintf(scan, "%s", (*itor).c_str()); |
426 |
> |
StringCchPrintf(scan, MAX_PATH, "%s", (*itor).c_str()); |
427 |
|
|
428 |
|
LVITEM item; |
429 |
|
|
472 |
|
SendMessage(dialog, BFFM_SETOKTEXT, 0, |
473 |
|
LPARAM(toWide("&Select").c_str())); |
474 |
|
SendMessage(dialog, BFFM_SETEXPANDED, FALSE, CSIDL_DRIVES); |
475 |
< |
SendMessage(dialog, BFFM_SETSELECTION, TRUE, LPARAM(HIWORD(d) ? |
476 |
< |
data->scanDir.c_str() : data->saveDir.c_str())); |
475 |
> |
|
476 |
> |
if ((HIWORD(d) ? data->scanDir : data->saveDir) != "") |
477 |
> |
{ |
478 |
> |
IShellFolder* desktop; |
479 |
> |
LPWSTR path = new WCHAR[(HIWORD(d) ? data->scanDir.length() : |
480 |
> |
data->saveDir.length()) + 1]; |
481 |
> |
LPITEMIDLIST id; |
482 |
> |
|
483 |
> |
StringCchPrintfW(path, (HIWORD(d) ? data->scanDir.length() : |
484 |
> |
data->saveDir.length()) + 1, toWide(HIWORD(d) ? data->scanDir : |
485 |
> |
data->saveDir).c_str()); |
486 |
> |
|
487 |
> |
if (debug) cerr << "path = " << toAnsi(path) << "\n"; |
488 |
> |
|
489 |
> |
SHGetDesktopFolder(&desktop); |
490 |
> |
desktop->ParseDisplayName(dialog, NULL, path, NULL, &id, NULL); |
491 |
> |
|
492 |
> |
if (id != NULL) |
493 |
> |
{ |
494 |
> |
SendMessage(dialog, BFFM_SETSELECTION, FALSE, LPARAM(id)); |
495 |
> |
|
496 |
> |
LPMALLOC destruct; |
497 |
> |
|
498 |
> |
SHGetMalloc(&destruct); |
499 |
> |
destruct->Free(id); |
500 |
> |
destruct->Release(); |
501 |
> |
} |
502 |
> |
|
503 |
> |
desktop->Release(); |
504 |
> |
} |
505 |
|
break; |
506 |
|
case BFFM_SELCHANGED: |
507 |
|
{ |
886 |
|
<< "}\n"; |
887 |
|
} |
888 |
|
|
889 |
< |
data->save = data->saveDir + '\\' + data->client.getFile(); |
889 |
> |
data->save = data->saveDir + data->client.getFile(); |
890 |
|
|
891 |
|
if (debug) cerr << "save = " << data->save << "\n"; |
892 |
|
|