source: trunk/src/comdlg32/comdlg32.cpp@ 162

Last change on this file since 162 was 162, checked in by achimha, 26 years ago

Unicode support for all dialogs except PageSetup dialog which is not available in Open32

File size: 22.3 KB
Line 
1/* $Id: comdlg32.cpp,v 1.5 1999-06-23 16:39:29 achimha Exp $ */
2
3/*
4 * COMDLG32 implementation
5 *
6 * Copyright 1998 Sander van Leeuwen
7 *
8 *
9 * Project Odin Software License can be found in LICENSE.TXT
10 *
11 */
12#include <os2win.h>
13#include <stdarg.h>
14#include <stdlib.h>
15#include <string.h>
16#include <misc.h>
17#include <wndproc.h>
18
19
20#define COMDLG32_CHECKHOOK(a,b,c) \
21 if(a->Flags & b) \
22 { \
23 wndproc = CreateWindowProc((WNDPROC)a->lpfnHook);\
24 if(wndproc == NULL) \
25 return(FALSE); \
26 \
27 a->lpfnHook = (c)Win32WindowProc::GetOS2Callback();\
28 }
29
30#define COMDLG32_CHECKHOOK2(a,b,c,d) \
31 if(a->Flags & b) \
32 { \
33 wndproc = CreateWindowProc((WNDPROC)a->d);\
34 if(wndproc == NULL) \
35 return(FALSE); \
36 \
37 a->d = (c)Win32WindowProc::GetOS2Callback();\
38 }
39
40
41/*****************************************************************************
42 * Name :
43 * Purpose :
44 * Parameters:
45 * Variables :
46 * Result :
47 * Remark :
48 * Status :
49 *
50 * Author : Patrick Haller [Tue, 1998/02/10 01:55]
51 *****************************************************************************/
52
53BOOL WIN32API GetSaveFileNameA(LPOPENFILENAMEA lpofn)
54{
55 Win32WindowProc *wndproc;
56
57 dprintf(("COMDLG32: GetSaveFileNameA(%08xh)\n",
58 lpofn));
59
60 COMDLG32_CHECKHOOK(lpofn, OFN_ENABLEHOOK, WNDPROC)
61
62 return(O32_GetSaveFileName(lpofn));
63}
64
65
66/*****************************************************************************
67 * Name :
68 * Purpose :
69 * Parameters:
70 * Variables :
71 * Result :
72 * Remark :
73 * Status :
74 *
75 * Author : Patrick Haller [Tue, 1998/02/10 01:55]
76 *****************************************************************************/
77
78BOOL WIN32API GetOpenFileNameA(LPOPENFILENAMEA lpofn)
79{
80 Win32WindowProc *wndproc;
81
82 dprintf(("COMDLG32: GetOpenFileNameA(%08xh)\n",
83 lpofn));
84
85 COMDLG32_CHECKHOOK(lpofn, OFN_ENABLEHOOK, WNDPROC)
86
87 return(O32_GetOpenFileName(lpofn));
88}
89
90
91/*****************************************************************************
92 * Name :
93 * Purpose :
94 * Parameters:
95 * Variables :
96 * Result :
97 * Remark :
98 * Status :
99 *
100 * Author : Patrick Haller [Tue, 1998/02/10 01:55]
101 *****************************************************************************/
102
103INT16 WIN32API GetFileTitleA(LPCSTR lpFile,
104 LPSTR lpTitle,
105 UINT cbBuf)
106{
107 dprintf(("COMDLG32: GetFileTitleA(%s,%08xh,%08xh)\n",
108 lpFile,
109 lpTitle,
110 cbBuf));
111
112 return O32_GetFileTitle(lpFile,
113 lpTitle,
114 cbBuf);
115}
116
117
118/*****************************************************************************
119 * Name :
120 * Purpose :
121 * Parameters:
122 * Variables :
123 * Result :
124 * Remark :
125 * Status :
126 *
127 * Author : Patrick Haller [Tue, 1998/02/10 01:55]
128 *****************************************************************************/
129
130BOOL WIN32API ChooseColorA(LPCHOOSECOLORA lpcc)
131{
132 Win32WindowProc *wndproc;
133
134 dprintf(("COMDLG32: ChooseColorA(%08xh)\n",
135 lpcc));
136
137 COMDLG32_CHECKHOOK(lpcc, CC_ENABLEHOOK, LPCCHOOKPROC)
138
139 return O32_ChooseColor(lpcc);
140}
141
142
143/*****************************************************************************
144 * Name :
145 * Purpose :
146 * Parameters:
147 * Variables :
148 * Result :
149 * Remark : casting is a little hot, should work however
150 * assuming lpcc->lpTemplateName is READONLY pointer!
151 * Status :
152 *
153 * Author : Patrick Haller [Tue, 1998/02/10 01:55]
154 *****************************************************************************/
155
156BOOL WIN32API ChooseColorW(LPCHOOSECOLORW lpcc)
157{
158 Win32WindowProc *wndproc;
159 BOOL bResult;
160 LPCWSTR lpTemplateNameBackup = lpcc->lpTemplateName;
161
162 dprintf(("COMDLG32: ChooseColorW(%08xh).\n",
163 lpcc));
164
165 // if no template is to convert, we can take this shortcut
166 if (!(lpcc->Flags & CC_ENABLETEMPLATE))
167 return O32_ChooseColor( (LPCHOOSECOLORA)lpcc );
168
169
170 // convert to ASCII string
171 if (lpcc->lpTemplateName != NULL)
172 lpcc->lpTemplateName = (LPCWSTR)UnicodeToAsciiString((WCHAR*)lpcc->lpTemplateName);
173
174 COMDLG32_CHECKHOOK(lpcc, CC_ENABLEHOOK, LPCCHOOKPROC)
175
176 bResult = O32_ChooseColor((LPCHOOSECOLORA)lpcc); // call ASCII version
177
178 // free temporary ASCII string and restore UNICODE string
179 if (lpcc->lpTemplateName != NULL)
180 {
181 FreeAsciiString((char*)lpcc->lpTemplateName);
182 lpcc->lpTemplateName = lpTemplateNameBackup;
183 }
184
185 return bResult;
186}
187
188
189/*****************************************************************************
190 * Name :
191 * Purpose :
192 * Parameters:
193 * Variables :
194 * Result :
195 * Remark :
196 * Status :
197 *
198 * Author : Patrick Haller [Tue, 1998/02/10 01:55]
199 *****************************************************************************/
200
201BOOL WIN32API ChooseFontA(LPCHOOSEFONTA lpcf)
202{
203 Win32WindowProc *wndproc;
204
205 dprintf(("COMDLG32: ChooseFontA(%08xh).\n",
206 lpcf));
207
208 COMDLG32_CHECKHOOK(lpcf, CF_ENABLEHOOK, WNDPROC)
209
210 return O32_ChooseFont(lpcf);
211}
212
213
214/*****************************************************************************
215 * Name :
216 * Purpose :
217 * Parameters:
218 * Variables :
219 * Result :
220 * Remark : unknown yet, what is INPUT and what is OUTPUT string
221 * Status :
222 *
223 * Author : Patrick Haller [Tue, 1998/02/10 01:55]
224 *****************************************************************************/
225
226BOOL WIN32API ChooseFontW(LPCHOOSEFONTW lpcf)
227{
228 Win32WindowProc *wndproc;
229 BOOL bResult;
230 CHOOSEFONTA asciicf;
231 LOGFONTA asciilf;
232 char szAsciiStyle[64];
233
234 // NOTE: LOGFONTW/A is NOT converted !
235 dprintf(("COMDLG32: ChooseFontW(%08xh) not correctly implemented.\n",
236 lpcf));
237
238 // convert to ASCII string
239 memcpy(&asciicf, // make binary copy of CHOOSEFONTW
240 lpcf, // to save the flags
241 sizeof(asciicf));
242
243 memcpy (&asciilf,
244 lpcf->lpLogFont,
245 sizeof(LOGFONTA));
246
247 asciicf.lpLogFont = &asciilf; // update pointer
248
249
250 // now translate the strings
251 if (lpcf->Flags & CF_ENABLETEMPLATE)
252 asciicf.lpTemplateName = UnicodeToAsciiString((LPWSTR)lpcf->lpTemplateName);
253 else
254 asciicf.lpTemplateName = NULL;
255
256 UnicodeToAsciiN(lpcf->lpszStyle,
257 szAsciiStyle,
258 sizeof(szAsciiStyle));
259 asciicf.lpszStyle = szAsciiStyle;
260
261 UnicodeToAsciiN(lpcf->lpLogFont->lfFaceName,
262 asciilf.lfFaceName,
263 LF_FACESIZE);
264
265 // LPCFHOOKPROC != WNDPROC ?
266 COMDLG32_CHECKHOOK(lpcf, CF_ENABLEHOOK, WNDPROC)
267
268 // switch strings
269 bResult = O32_ChooseFont((LPCHOOSEFONTA)&asciicf); // call ASCII version
270
271 // transfer BACK resulting strings !!!
272 AsciiToUnicodeN(asciicf.lpLogFont->lfFaceName,
273 lpcf->lpLogFont->lfFaceName,
274 LF_FACESIZE);
275
276 AsciiToUnicode(asciicf.lpszStyle,
277 lpcf->lpszStyle);
278
279 if(asciicf.lpTemplateName != NULL)
280 FreeAsciiString((char*)asciicf.lpTemplateName);
281
282 return bResult;
283}
284
285
286/*****************************************************************************
287 * Name :
288 * Purpose :
289 * Parameters:
290 * Variables :
291 * Result :
292 * Remark :
293 * Status :
294 *
295 * Author : Patrick Haller [Tue, 1998/02/10 01:55]
296 *****************************************************************************/
297
298DWORD WIN32API CommDlgExtendedError(void)
299{
300 dprintf(("COMDLG32: ComDlgExtendedError()\n"));
301
302 return O32_CommDlgExtendedError();
303}
304
305
306/*****************************************************************************
307 * Name :
308 * Purpose :
309 * Parameters:
310 * Variables :
311 * Result :
312 * Remark :
313 * Status :
314 *
315 * Author : Patrick Haller [Tue, 1998/02/10 01:55]
316 *****************************************************************************/
317
318HWND WIN32API FindTextA(LPFINDREPLACEA lpfr)
319{
320 Win32WindowProc *wndproc;
321
322 dprintf(("COMDLG32: FindTextA(%08xh).\n",
323 lpfr));
324
325 COMDLG32_CHECKHOOK(lpfr, FR_ENABLEHOOK, WNDPROC)
326
327 return O32_FindText(lpfr);
328}
329
330
331/*****************************************************************************
332 * Name :
333 * Purpose :
334 * Parameters:
335 * Variables :
336 * Result :
337 * Remark :
338 * Status :
339 *
340 * Author : Patrick Haller [Tue, 1998/02/10 01:55]
341 *****************************************************************************/
342
343HWND WIN32API FindTextW(LPFINDREPLACEW lpfr)
344{
345 Win32WindowProc *wndproc;
346 BOOL bResult;
347 FINDREPLACEA fr;
348
349 dprintf(("COMDLG32: FindTextW(%08xh)\n",
350 lpfr));
351
352 memcpy(&fr, // make binary copy first to save all the fields
353 lpfr,
354 sizeof(fr));
355
356 // convert to ASCII string
357 if ((lpfr->Flags & FR_ENABLETEMPLATE) &&
358 (lpfr->lpTemplateName != NULL))
359 fr.lpTemplateName = UnicodeToAsciiString((WCHAR*)lpfr->lpTemplateName);
360 else
361 fr.lpTemplateName = NULL;
362
363 if (lpfr->lpstrFindWhat != NULL)
364 fr.lpstrFindWhat = UnicodeToAsciiString((WCHAR*)lpfr->lpstrFindWhat);
365
366 if (lpfr->lpstrReplaceWith != NULL)
367 fr.lpstrReplaceWith = UnicodeToAsciiString((WCHAR*)lpfr->lpstrReplaceWith);
368
369
370 COMDLG32_CHECKHOOK(lpfr, FR_ENABLEHOOK, WNDPROC)
371
372 bResult = O32_FindText(&fr); // call ASCII version
373
374 // @@@PH: Note -- we might have to transfer BACK resulting strings !!!
375 // free temporary ASCII string and restore UNICODE string
376 if (fr.lpTemplateName != NULL)
377 FreeAsciiString((char*)fr.lpTemplateName);
378
379 // free temporary ASCII string and restore UNICODE string
380 if (fr.lpstrFindWhat != NULL)
381 {
382 AsciiToUnicode(fr.lpstrFindWhat,
383 lpfr->lpstrFindWhat);
384
385 FreeAsciiString((char*)fr.lpstrFindWhat);
386 }
387
388 if (fr.lpstrReplaceWith != NULL)
389 {
390 AsciiToUnicode(fr.lpstrReplaceWith,
391 lpfr->lpstrReplaceWith);
392
393 FreeAsciiString((char*)fr.lpstrReplaceWith);
394 }
395
396 return bResult;
397}
398
399
400/*****************************************************************************
401 * Name :
402 * Purpose :
403 * Parameters:
404 * Variables :
405 * Result :
406 * Remark :
407 * Status :
408 *
409 * Author : Patrick Haller [Tue, 1998/02/10 01:55]
410 *****************************************************************************/
411
412INT16 WIN32API GetFileTitleW(LPCWSTR lpFile,
413 LPWSTR lpTitle,
414 UINT cbBuf)
415{
416 LPSTR lpFileBackup;
417 char szTitle[256];
418 INT16 iResult;
419
420 dprintf(("COMDLG32: GetFileTitleW(%08xh,%08xh,%08xh).\n",
421 lpFile,
422 lpTitle,
423 cbBuf));
424
425 lpFileBackup = UnicodeToAsciiString((LPWSTR)lpFile);
426 iResult = O32_GetFileTitle(lpFileBackup,
427 szTitle,
428 cbBuf);
429
430 FreeAsciiString(lpFileBackup);
431
432 // transform result into Unicode
433 AsciiToUnicode(szTitle,
434 lpTitle);
435
436 return iResult;
437}
438
439
440/*****************************************************************************
441 * Name :
442 * Purpose :
443 * Parameters:
444 * Variables :
445 * Result :
446 * Remark :
447 * Status :
448 *
449 * Author : Patrick Haller [Tue, 1998/02/10 01:55]
450 *****************************************************************************/
451
452BOOL WIN32API GetOpenFileNameW(LPOPENFILENAMEW lpofn)
453{
454 Win32WindowProc *wndproc;
455 OPENFILENAMEA ofn;
456 char* szFile;
457 char* szFileTitle;
458 BOOL bResult;
459
460 dprintf(("COMDLG32: GetOpenFileNameW(%08xh)\n",
461 lpofn));
462
463 memcpy(&ofn, // make binary copy first to save all the fields
464 lpofn,
465 sizeof(ofn));
466
467 // convert to ASCII string
468 if ((lpofn->Flags && OFN_ENABLETEMPLATE) &&
469 (lpofn->lpTemplateName != NULL))
470 ofn.lpTemplateName = UnicodeToAsciiString((WCHAR*)lpofn->lpTemplateName);
471 else
472 ofn.lpTemplateName = NULL;
473
474 if (lpofn->lpstrFilter != NULL)
475 ofn.lpstrFilter = UnicodeToAsciiString((WCHAR*)lpofn->lpstrFilter);
476
477 if (lpofn->lpstrCustomFilter != NULL)
478 ofn.lpstrCustomFilter = UnicodeToAsciiString((WCHAR*)lpofn->lpstrCustomFilter);
479
480 if (lpofn->lpstrInitialDir != NULL)
481 ofn.lpstrInitialDir = UnicodeToAsciiString((WCHAR*)lpofn->lpstrInitialDir);
482
483 if (lpofn->lpstrTitle != NULL)
484 ofn.lpstrTitle = UnicodeToAsciiString((WCHAR*)lpofn->lpstrTitle);
485
486 if (lpofn->lpstrDefExt != NULL)
487 ofn.lpstrDefExt = UnicodeToAsciiString((WCHAR*)lpofn->lpstrDefExt);
488
489 szFile = (char*)malloc(lpofn->nMaxFile);
490 szFileTitle = (char*)malloc(lpofn->nMaxFileTitle);
491 ofn.lpstrFile = szFile;
492 ofn.lpstrFileTitle = szFileTitle;
493
494 COMDLG32_CHECKHOOK(lpofn, OFN_ENABLEHOOK, WNDPROC)
495
496 bResult = O32_GetOpenFileName(&ofn);
497
498 if (ofn.lpTemplateName != NULL) FreeAsciiString((char*)ofn.lpTemplateName);
499 if (ofn.lpstrFilter != NULL) FreeAsciiString((char*)ofn.lpstrFilter);
500 if (ofn.lpstrCustomFilter != NULL) FreeAsciiString((char*)ofn.lpstrCustomFilter);
501 if (ofn.lpstrInitialDir != NULL) FreeAsciiString((char*)ofn.lpstrInitialDir);
502 if (ofn.lpstrTitle != NULL) FreeAsciiString((char*)ofn.lpstrTitle);
503 if (ofn.lpstrDefExt != NULL) FreeAsciiString((char*)ofn.lpstrDefExt);
504
505 // transform back the result
506 AsciiToUnicodeN(ofn.lpstrFile,
507 lpofn->lpstrFile,
508 lpofn->nMaxFile);
509
510 AsciiToUnicodeN(ofn.lpstrFileTitle,
511 lpofn->lpstrFileTitle,
512 lpofn->nMaxFileTitle);
513
514 free(szFile);
515 free(szFileTitle);
516
517 return bResult;
518}
519
520
521/*****************************************************************************
522 * Name :
523 * Purpose :
524 * Parameters:
525 * Variables :
526 * Result :
527 * Remark :
528 * Status :
529 *
530 * Author : Patrick Haller [Tue, 1998/02/10 01:55]
531 *****************************************************************************/
532
533BOOL WIN32API GetSaveFileNameW(LPOPENFILENAMEW lpofn)
534{
535 Win32WindowProc *wndproc;
536 OPENFILENAMEA ofn;
537 char* szFile;
538 char* szFileTitle;
539 BOOL bResult;
540
541 dprintf(("COMDLG32: GetSaveFileNameW(%08xh)\n",
542 lpofn));
543
544 memcpy(&ofn, // make binary copy first to save all the fields
545 lpofn,
546 sizeof(ofn));
547
548 // convert to ASCII string
549 if ((lpofn->Flags && OFN_ENABLETEMPLATE) &&
550 (lpofn->lpTemplateName != NULL))
551 ofn.lpTemplateName = UnicodeToAsciiString((WCHAR*)lpofn->lpTemplateName);
552 else
553 ofn.lpTemplateName = NULL;
554
555 if (lpofn->lpstrFilter != NULL)
556 ofn.lpstrFilter = UnicodeToAsciiString((WCHAR*)lpofn->lpstrFilter);
557
558 if (lpofn->lpstrCustomFilter != NULL)
559 ofn.lpstrCustomFilter = UnicodeToAsciiString((WCHAR*)lpofn->lpstrCustomFilter);
560
561 if (lpofn->lpstrInitialDir != NULL)
562 ofn.lpstrInitialDir = UnicodeToAsciiString((WCHAR*)lpofn->lpstrInitialDir);
563
564 if (lpofn->lpstrTitle != NULL)
565 ofn.lpstrTitle = UnicodeToAsciiString((WCHAR*)lpofn->lpstrTitle);
566
567 if (lpofn->lpstrDefExt != NULL)
568 ofn.lpstrDefExt = UnicodeToAsciiString((WCHAR*)lpofn->lpstrDefExt);
569
570 // prepare szFile and szFileTitle
571 szFile = (char*)malloc(lpofn->nMaxFile);
572 szFileTitle = (char*)malloc(lpofn->nMaxFileTitle);
573
574 if (*lpofn->lpstrFile == 0)
575 szFile[0] = 0;
576 else
577 UnicodeToAsciiN(lpofn->lpstrFile,
578 szFile,
579 lpofn->nMaxFile);
580
581 if (*lpofn->lpstrFileTitle == 0)
582 szFileTitle[0] = 0;
583 else
584 UnicodeToAsciiN(lpofn->lpstrFileTitle,
585 szFileTitle,
586 lpofn->nMaxFileTitle);
587
588 ofn.lpstrFile = szFile;
589 ofn.lpstrFileTitle = szFileTitle;
590
591 COMDLG32_CHECKHOOK(lpofn, OFN_ENABLEHOOK, WNDPROC)
592
593 bResult = O32_GetSaveFileName(&ofn);
594
595 if (ofn.lpTemplateName != NULL) FreeAsciiString((char*)ofn.lpTemplateName);
596 if (ofn.lpstrFilter != NULL) FreeAsciiString((char*)ofn.lpstrFilter);
597 if (ofn.lpstrCustomFilter != NULL) FreeAsciiString((char*)ofn.lpstrCustomFilter);
598 if (ofn.lpstrInitialDir != NULL) FreeAsciiString((char*)ofn.lpstrInitialDir);
599 if (ofn.lpstrTitle != NULL) FreeAsciiString((char*)ofn.lpstrTitle);
600 if (ofn.lpstrDefExt != NULL) FreeAsciiString((char*)ofn.lpstrDefExt);
601
602 // transform back the result
603 lpofn->nFileOffset = ofn.nFileOffset;
604 lpofn->nFileExtension = ofn.nFileExtension;
605 // @@@PH: remark - are these all required pass-back fields ?
606
607 AsciiToUnicodeN(ofn.lpstrFile,
608 lpofn->lpstrFile,
609 lpofn->nMaxFile);
610
611 AsciiToUnicodeN(ofn.lpstrFileTitle,
612 lpofn->lpstrFileTitle,
613 lpofn->nMaxFileTitle);
614
615 free(szFile);
616 free(szFileTitle);
617
618 return bResult;
619}
620
621/*****************************************************************************
622 * Name :
623 * Purpose :
624 * Parameters:
625 * Variables :
626 * Result :
627 * Remark :
628 * Status :
629 *
630 * Author : Patrick Haller [Tue, 1998/02/10 01:55]
631 *****************************************************************************/
632
633BOOL WIN32API PrintDlgA(LPPRINTDLGA lppd)
634{
635 Win32WindowProc *wndproc;
636
637 dprintf(("COMDLG32: PrintDlgA(%08xh)\n",
638 lppd));
639
640 COMDLG32_CHECKHOOK2(lppd, PD_ENABLEPRINTHOOK, LPPRINTHOOKPROC,lpfnPrintHook)
641 COMDLG32_CHECKHOOK2(lppd, PD_ENABLESETUPHOOK, LPSETUPHOOKPROC,lpfnSetupHook)
642
643 return O32_PrintDlg(lppd);
644}
645
646
647/*****************************************************************************
648 * Name :
649 * Purpose :
650 * Parameters:
651 * Variables :
652 * Result :
653 * Remark :
654 * Status :
655 *
656 * Author : Patrick Haller [Tue, 1998/02/10 01:55]
657 *****************************************************************************/
658
659BOOL WIN32API PrintDlgW(LPPRINTDLGW lppd)
660{
661 Win32WindowProc *wndproc;
662
663 PRINTDLGA pd;
664 BOOL bResult;
665
666 dprintf(("COMDLG32: PrintDlgW(%08xh)\n",
667 lppd));
668
669 memcpy(&pd, // make binary copy first to save all the fields
670 lppd,
671 sizeof(pd));
672
673 // convert to ASCII string
674 if ((lppd->Flags & PD_ENABLEPRINTTEMPLATE) &&
675 (lppd->lpPrintTemplateName != NULL))
676 pd.lpPrintTemplateName = UnicodeToAsciiString((WCHAR*)lppd->lpPrintTemplateName);
677 else
678 pd.lpPrintTemplateName = NULL;
679
680 if ((lppd->Flags & PD_ENABLESETUPTEMPLATE) &&
681 (lppd->lpSetupTemplateName != NULL))
682 pd.lpSetupTemplateName = UnicodeToAsciiString((WCHAR*)lppd->lpSetupTemplateName);
683 else
684 pd.lpSetupTemplateName = NULL;
685
686 COMDLG32_CHECKHOOK2(lppd, PD_ENABLEPRINTHOOK, LPPRINTHOOKPROC,lpfnPrintHook)
687 COMDLG32_CHECKHOOK2(lppd, PD_ENABLESETUPHOOK, LPSETUPHOOKPROC,lpfnSetupHook)
688
689 bResult = O32_PrintDlg(&pd); // call ASCII API
690
691 if (pd.lpPrintTemplateName != NULL) FreeAsciiString((char*)pd.lpPrintTemplateName);
692 if (pd.lpSetupTemplateName != NULL) FreeAsciiString((char*)pd.lpSetupTemplateName);
693
694 // copy back result
695 lppd->nFromPage = pd.nFromPage;
696 lppd->nToPage = pd.nToPage;
697 lppd->nMinPage = pd.nMinPage;
698 lppd->nMaxPage = pd.nMaxPage;
699 lppd->nCopies = pd.nCopies;
700 //@@@PH: all pass-back fields ?
701
702 return bResult;
703}
704
705
706/*****************************************************************************
707 * Name :
708 * Purpose :
709 * Parameters:
710 * Variables :
711 * Result :
712 * Remark :
713 * Status :
714 *
715 * Author : Patrick Haller [Tue, 1998/02/10 01:55]
716 *****************************************************************************/
717
718HWND WIN32API ReplaceTextA(LPFINDREPLACEA lpfr)
719{
720 Win32WindowProc *wndproc;
721
722 dprintf(("COMDLG32: ReplaceTextA(%08xh).\n",
723 lpfr));
724
725 COMDLG32_CHECKHOOK(lpfr, FR_ENABLEHOOK, WNDPROC)
726
727 return O32_ReplaceText(lpfr);
728}
729
730
731/*****************************************************************************
732 * Name :
733 * Purpose :
734 * Parameters:
735 * Variables :
736 * Result :
737 * Remark :
738 * Status :
739 *
740 * Author : Patrick Haller [Tue, 1998/02/10 01:55]
741 *****************************************************************************/
742
743HWND WIN32API ReplaceTextW(LPFINDREPLACEW lpfr)
744{
745 Win32WindowProc *wndproc;
746 BOOL bResult;
747 FINDREPLACEA fr;
748
749 dprintf(("COMDLG32: ReplaceTextW(%08xh)\n",
750 lpfr));
751
752 memcpy(&fr, // make binary copy first to save all the fields
753 lpfr,
754 sizeof(fr));
755
756 // convert to ASCII string
757 if ((lpfr->Flags & FR_ENABLETEMPLATE) &&
758 (lpfr->lpTemplateName != NULL))
759 fr.lpTemplateName = UnicodeToAsciiString((WCHAR*)lpfr->lpTemplateName);
760 else
761 fr.lpTemplateName = NULL;
762
763 if (lpfr->lpstrFindWhat != NULL)
764 fr.lpstrFindWhat = UnicodeToAsciiString((WCHAR*)lpfr->lpstrFindWhat);
765
766 if (lpfr->lpstrReplaceWith != NULL)
767 fr.lpstrReplaceWith = UnicodeToAsciiString((WCHAR*)lpfr->lpstrReplaceWith);
768
769
770 COMDLG32_CHECKHOOK(lpfr, FR_ENABLEHOOK, WNDPROC)
771
772 bResult = O32_ReplaceText(&fr); // call ASCII version
773
774 // @@@PH: Note -- we might have to transfer BACK resulting strings !!!
775 // free temporary ASCII string and restore UNICODE string
776 if (fr.lpTemplateName != NULL)
777 FreeAsciiString((char*)fr.lpTemplateName);
778
779 // free temporary ASCII string and restore UNICODE string
780 if (fr.lpstrFindWhat != NULL)
781 {
782 AsciiToUnicode(fr.lpstrFindWhat,
783 lpfr->lpstrFindWhat);
784
785 FreeAsciiString((char*)fr.lpstrFindWhat);
786 }
787
788 if (fr.lpstrReplaceWith != NULL)
789 {
790 AsciiToUnicode(fr.lpstrReplaceWith,
791 lpfr->lpstrReplaceWith);
792
793 FreeAsciiString((char*)fr.lpstrReplaceWith);
794 }
795
796 return bResult;
797
798}
799
800
801/*****************************************************************************
802 * Name :
803 * Purpose :
804 * Parameters:
805 * Variables :
806 * Result :
807 * Remark :
808 * Status :
809 *
810 * Author : Patrick Haller [Tue, 1998/02/10 01:55]
811 *****************************************************************************/
812
813BOOL WIN32API PageSetupDlgA(LPPAGESETUPDLGA lppsd)
814{
815 Win32WindowProc *wndproc;
816
817 dprintf(("COMDLG32: PageSetupDlgA(%08xh) not implemented.\n",
818 lppsd));
819
820 //COMDLG32_CHECKHOOK2(lppsd, PSD_ENABLESETUPHOOK, LPPAGESETUPHOOK, lpfnPageSetupHook)
821
822 return(FALSE);
823}
824
825
826/*****************************************************************************
827 * Name :
828 * Purpose :
829 * Parameters:
830 * Variables :
831 * Result :
832 * Remark :
833 * Status :
834 *
835 * Author : Patrick Haller [Tue, 1998/02/10 01:55]
836 *****************************************************************************/
837
838BOOL WIN32API PageSetupDlgW(LPPAGESETUPDLGW lppsd)
839{
840 Win32WindowProc *wndproc;
841
842 dprintf(("COMDLG32: PageSetupDlgW(%08xh) not implemented.\n",
843 lppsd));
844
845 //COMDLG32_CHECKHOOK2(lppsd, PSD_ENABLESETUPHOOK, LPPAGESETUPHOOK, lpfnPageSetupHook)
846
847 return(FALSE);
848}
Note: See TracBrowser for help on using the repository browser.