|
|
1.1 ! root 1: /************************************************************************ ! 2: ! 3: File: find.c ! 4: ! 5: Purpose: ! 6: ! 7: Manages CDTEST's find/replace dialog box. ! 8: ! 9: Functions: ! 10: ! 11: - lpfnFilterProc() -- A callback function for a filter that must be ! 12: installed if a modeless dialog is created with ! 13: another dialog as its parent. ! 14: ! 15: - DoFindDialog() -- Creates CDTEST's Open/Save dialog. ! 16: ! 17: - FindProc() -- Callback function for CDTEST's Find/Replace dlg. ! 18: ! 19: - InitFindStruct() -- Fills a FINDREPLACE structure with some defaults. ! 20: ! 21: - FillFindDlg() -- Fills CDTESTs Find/Replace dialog with the contents ! 22: of a FINDREPLACE structure. ! 23: ! 24: - GetFindDlg() -- Retrieves the users edit's from CDTEST's find/ ! 25: replace dialog and puts them in a FINDREPLACE ! 26: structure. ! 27: ! 28: - FindReplaceHookProc() -- Callback function for FindText() or ReplaceText() ! 29: which will be called if either of these dialogs ! 30: is created with the FR_ENABLEHOOK flag. ! 31: ! 32: - GetFindDlgHandle() -- Returns a handle to a preloaded FindText() template. ! 33: ! 34: - GetReplaceDlgHandle() -- Returns a handle to a preloaded ReplaceText() template. ! 35: ! 36: - DoFindRepStuff() -- Calls FindText() or ReplaceText(). ! 37: ! 38: ! 39: NOTE: CDTEST does not multithread the FindText() or the ReplaceText() ! 40: common dialogs. The reason for this is that since these dialogs ! 41: are modeless, their creation functions return immediately after the ! 42: dialogs are created as opposed to other dialog functions that ! 43: don't return until after the dialog has been destroyed by the user. ! 44: ! 45: As a result, any threads that create modeless dialogs will end ! 46: immediately unless the threads themselves have separate message ! 47: loops. For the sake of clarity, this functionality has not been ! 48: added to CDTEST. ! 49: ! 50: ************************************************************************/ ! 51: ! 52: ! 53: #include <windows.h> ! 54: #include <commdlg.h> ! 55: #include <stdlib.h> ! 56: #include <winnls.h> ! 57: #include "cdtest.h" ! 58: #include "find.h" ! 59: #include "replace.h" ! 60: ! 61: ! 62: /* All functions used in this module + some exported ones */ ! 63: ! 64: void InitFindStruct(HWND, LPFINDREPLACE) ; ! 65: void FillFindDlg(HWND, LPFINDREPLACE) ; ! 66: void GetFindDlg(HWND, LPFINDREPLACE) ; ! 67: extern UINT uMode ; ! 68: extern LONG MyAtol(LPTSTR, BOOL, LPBOOL) ; ! 69: UINT APIENTRY FindReplaceHookProc(HWND, UINT, UINT, LONG) ; ! 70: void DoFindRepStuff(LPFINDREPLACE) ; ! 71: ! 72: ! 73: ! 74: /* All global variables used in this module */ ! 75: ! 76: HWND hwndFind ; ! 77: HWND hwndMainDialog ; ! 78: ! 79: FINDREPLACE fr ; ! 80: LPFINDREPLACE lpFr ; ! 81: ! 82: TCHAR szFindWhat[100] ; ! 83: TCHAR szReplaceWith[100] ; ! 84: TCHAR szTemplate[40] ; ! 85: ! 86: HANDLE hResFind, hDialogFind ; ! 87: HANDLE GetFindDlgHandle(void) ; ! 88: HANDLE GetReplaceDlgHandle(void) ; ! 89: ! 90: HBRUSH hBrushDlg ; ! 91: HBRUSH hBrushEdit ; //brush handles for new colors done with hook proc ! 92: HBRUSH hBrushButton ; ! 93: ! 94: ! 95: ! 96: ! 97: ! 98: /************************************************************************ ! 99: ! 100: Function: lpfnFilterProc(int, WPARAM, LAPRAM) ! 101: ! 102: Purpose: This is needed if a modeless dialog is created with its parent ! 103: as another dialog box. ! 104: ! 105: ! 106: Returns: TRUE if the message was handled and FALSE if not. ! 107: ! 108: Comments: ! 109: ! 110: The reason for this is that the DialogBox() procedure does not call ! 111: the IsDialogMessage() function before it processes messages, so we ! 112: need to install a hook function to do it for us. ! 113: ! 114: ************************************************************************/ ! 115: ! 116: ! 117: LRESULT CALLBACK lpfnFilterProc(int nCode, WPARAM wParam, LPARAM lParam) ! 118: { ! 119: static bFirstTime = TRUE ; ! 120: ! 121: if (nCode < 0) ! 122: return CallNextHookEx(hHook, nCode, wParam, lParam) ; ! 123: ! 124: if (nCode == MSGF_DIALOGBOX && bFirstTime) ! 125: { ! 126: bFirstTime = FALSE ; ! 127: ! 128: if (hwndFind && IsDialogMessage(hwndFind, (LPMSG) lParam)) ! 129: { ! 130: bFirstTime = TRUE ; ! 131: return 1L ; ! 132: } ! 133: ! 134: else ! 135: { ! 136: bFirstTime = TRUE ; ! 137: return 0L ; ! 138: } ! 139: } ! 140: else return 0L ; ! 141: } ! 142: ! 143: ! 144: ! 145: ! 146: ! 147: ! 148: ! 149: /************************************************************************ ! 150: ! 151: Function: DoFindDialog(HWND) ! 152: ! 153: Purpose: This function installs the Hook function, creates the Find/ ! 154: Replace dialog, and un-installs the Hook. ! 155: ! 156: Returns: Nothing. ! 157: ! 158: Comments: ! 159: ! 160: ************************************************************************/ ! 161: ! 162: void DoFindDialog(HWND hwnd) ! 163: { ! 164: bDoFindDlg = TRUE ; ! 165: ! 166: /* this is a little different than the others. If the dialog is just ! 167: created normally, it will make no IsDlgMessage() checks and the ! 168: find/replace dialogs will have no keyboard input (i.e. tabbing and ! 169: alt+key-ing from control to control. To fix this, a message hook ! 170: and message filter have to be installed ! 171: ! 172: It must be set to only look at the input for the current thread, or other ! 173: programs will be interrupted by this hook also. ! 174: */ ! 175: ! 176: hHook = SetWindowsHookEx(WH_MSGFILTER, lpfnFilterProc, ! 177: hInst, GetCurrentThreadId()) ; ! 178: ! 179: if (!hHook) return ; ! 180: ! 181: DialogBox(hInst, MAKEINTRESOURCE(ID_FINDDIALOG), hwnd, FindProc) ; ! 182: ! 183: UnhookWindowsHookEx(hHook) ; ! 184: ! 185: } ! 186: ! 187: ! 188: ! 189: ! 190: ! 191: ! 192: ! 193: /************************************************************************ ! 194: ! 195: Function: FindProc(HWND, UINT, UINT, LONG) ! 196: ! 197: Purpose: This is the callback function for the CDTEST's Find/Replace ! 198: Dialog. ! 199: ! 200: Returns: TRUE or FALSE depending on the situation. ! 201: ! 202: Comments: ! 203: ! 204: ************************************************************************/ ! 205: ! 206: BOOL APIENTRY FindProc(HWND hwnd, UINT msg, UINT wParam, LONG lParam) ! 207: { ! 208: switch (msg) ! 209: { ! 210: case WM_INITDIALOG: ! 211: ! 212: if (bDoFindDlg) ! 213: SetWindowText(hwnd, TEXT("FindText()")) ; ! 214: else ! 215: SetWindowText(hwnd, TEXT("ReplaceText()")) ; ! 216: ! 217: InitFindStruct(hwnd, &fr) ; ! 218: FillFindDlg(hwnd, &fr) ; ! 219: ! 220: hwndMainDialog = hwnd ; ! 221: ! 222: ! 223: /* The find and replace dialogs are a lot harder to multithread because they ! 224: are modeless. Modeless dialog creation functions return right after the ! 225: dialog is created. Since ExitThread will be called at this point, it is ! 226: probably not possible to multithread these dialogs without a separate ! 227: GetMessage() loop. ! 228: */ ! 229: ! 230: ! 231: EnableWindow(GetDlgItem(hwnd, ID_MULTITHREADFINDREP), FALSE) ; ! 232: ! 233: SetFocus(GetDlgItem(hwnd, ID_STRUCTSIZEFT)) ; ! 234: ! 235: break ; ! 236: ! 237: ! 238: case WM_COMMAND: ! 239: { ! 240: switch (LOWORD(wParam)) ! 241: { ! 242: case IDOK: ! 243: GetFindDlg(hwnd, &fr) ; ! 244: DoFindRepStuff(&fr) ; ! 245: break ; ! 246: ! 247: case ID_RESETFIND: ! 248: SendDlgItemMessage(hwnd, ID_FRNULLSTRUCT, BM_SETCHECK, (WPARAM)0, (LPARAM)0) ; ! 249: SendDlgItemMessage(hwnd, ID_PRELOADEDFIND, BM_SETCHECK, (WPARAM)0, (LPARAM)0) ; ! 250: InitFindStruct(hwnd, &fr) ; ! 251: FillFindDlg(hwnd, &fr) ; ! 252: SetFocus(GetDlgItem(hwnd, ID_STRUCTSIZEFT)) ; ! 253: break ; ! 254: ! 255: case IDCANCEL: ! 256: EndDialog(hwnd, FALSE) ; ! 257: ! 258: break ; ! 259: ! 260: ! 261: default: break ; ! 262: } ! 263: ! 264: } ! 265: ! 266: default: ! 267: ! 268: ! 269: /* nFindMsg is registered at program startup (see CDTEST.c). The ! 270: FindText() and ReplaceText() dialogs will communicate with the ! 271: calling application via this message. */ ! 272: ! 273: if (msg == nFindMsg) ! 274: { ! 275: lpFr = (LPFINDREPLACE) lParam ; ! 276: ! 277: if (lpFr->Flags & FR_DIALOGTERM) ! 278: { ! 279: PostMessage(hwnd, UMSG_DECREMENTDLGCOUNT, 0, 0L) ; ! 280: ! 281: if (hDialogFind) ! 282: { ! 283: FreeResource(hDialogFind) ; ! 284: hDialogFind = (HANDLE) 0 ; ! 285: hResFind = (HANDLE) 0 ; ! 286: } ! 287: ! 288: hwndFind = (HWND) 0 ; ! 289: } ! 290: ! 291: FillFindDlg(hwnd, &fr) ; ! 292: ! 293: wsprintf(szTemp, szLongFilter, CommDlgExtendedError()) ; ! 294: SetDlgItemText(hwnd, ID_ERRORFT, szTemp) ; ! 295: ! 296: wsprintf(szTemp, szLongFilter, hwndFind) ; ! 297: SetDlgItemText(hwnd, ID_RETURNFT, szTemp) ; ! 298: } ! 299: ! 300: ! 301: /* If the help button is pressed in the FindText() or ReplaceText() ! 302: dialogs, it will send a message Registered with RegisterWindowMessage() ! 303: to the parent window. The message nHelpMessage was registered ! 304: at application startup */ ! 305: ! 306: if (msg == nHelpMessage) ! 307: MessageBox(GetForegroundWindow(), TEXT("Hello from the help button"), ! 308: TEXT("Find Help Button"), MB_OK | MB_APPLMODAL) ; ! 309: ! 310: break ; ! 311: } ! 312: ! 313: return FALSE ; ! 314: } ! 315: ! 316: ! 317: ! 318: ! 319: ! 320: ! 321: /************************************************************************ ! 322: ! 323: Function: InitFindStruct(HWND, LPFINDREPLACE) ! 324: ! 325: Purpose: Fills a FINDREPLACE structure with some defaults. ! 326: ! 327: ! 328: Returns: Nothing. ! 329: ! 330: Comments: ! 331: ! 332: ************************************************************************/ ! 333: ! 334: void InitFindStruct(HWND hwnd, LPFINDREPLACE pfr) ! 335: { ! 336: pfr->lStructSize = (DWORD) sizeof(FINDREPLACE) ; ! 337: pfr->hwndOwner = hwnd ; ! 338: pfr->hInstance = (HANDLE) hInst ; ! 339: pfr->Flags = FR_DOWN | FR_SHOWHELP ; ! 340: ! 341: lstrcpy(szFindWhat, TEXT("Word to find")) ; ! 342: pfr->lpstrFindWhat = szFindWhat ; ! 343: pfr->wFindWhatLen = 100 ; ! 344: ! 345: lstrcpy(szReplaceWith, TEXT("Replace with word")) ; ! 346: pfr->lpstrReplaceWith = szReplaceWith ; ! 347: pfr->wReplaceWithLen = 100 ; ! 348: ! 349: pfr->lCustData = (DWORD) 0 ; ! 350: ! 351: pfr->lpfnHook = FindReplaceHookProc ; ! 352: ! 353: lstrcpy(szTemplate, TEXT("fttemp1")) ; ! 354: ! 355: pfr->lpTemplateName = szTemplate ; ! 356: } ! 357: ! 358: ! 359: ! 360: ! 361: ! 362: ! 363: /************************************************************************ ! 364: ! 365: Function: FillFindDlg(HWND, LPFINDREPLACE) ! 366: ! 367: Purpose: Fills CDTEST's Find/Replace dialog with the contents of a ! 368: FINDREPLACE structure. ! 369: ! 370: Returns: Nothing. ! 371: ! 372: Comments: ! 373: ! 374: ************************************************************************/ ! 375: ! 376: void FillFindDlg(HWND hwnd, LPFINDREPLACE pfr) ! 377: { ! 378: wsprintf(szTemp, szLongFilter, pfr->lStructSize) ; ! 379: SetDlgItemText(hwnd, ID_STRUCTSIZEFT, szTemp) ; ! 380: ! 381: wsprintf(szTemp, szLongFilter, (DWORD) pfr->hwndOwner) ; ! 382: SetDlgItemText(hwnd, ID_HWNDOWNERFT, szTemp) ; ! 383: ! 384: wsprintf(szTemp, szLongFilter, (DWORD) pfr->hInstance) ; ! 385: SetDlgItemText(hwnd, ID_HINSTANCEFT, szTemp) ; ! 386: ! 387: wsprintf(szTemp, szLongFilter, pfr->Flags) ; ! 388: SetDlgItemText(hwnd, ID_FLAGSFT, szTemp) ; ! 389: ! 390: SetDlgItemText(hwnd, ID_FINDWHATFT, pfr->lpstrFindWhat) ; ! 391: ! 392: wsprintf(szTemp, szLongFilter, pfr->wFindWhatLen) ; ! 393: SetDlgItemText(hwnd, ID_FINDWHATLENFT, szTemp) ; ! 394: ! 395: SetDlgItemText(hwnd, ID_REPLACEWITHFT, pfr->lpstrReplaceWith) ; ! 396: ! 397: wsprintf(szTemp, szLongFilter, pfr->wReplaceWithLen) ; ! 398: SetDlgItemText(hwnd, ID_REPLACEWITHLENFT, szTemp) ; ! 399: ! 400: wsprintf(szTemp, szLongFilter, pfr->lCustData) ; ! 401: SetDlgItemText(hwnd, ID_CUSTDATAFT, szTemp) ; ! 402: ! 403: wsprintf(szTemp, szLongFilter, (DWORD) pfr->lpfnHook) ; ! 404: SetDlgItemText(hwnd, ID_HOOKFT, szTemp) ; ! 405: ! 406: SetDlgItemText(hwnd, ID_TEMPLATEFT, pfr->lpTemplateName) ; ! 407: } ! 408: ! 409: ! 410: ! 411: ! 412: ! 413: ! 414: /************************************************************************ ! 415: ! 416: Function: GetFindDlg(HWND, LPFINDREPLACE) ! 417: ! 418: Purpose: Fills a FINDREPLACE structure with the user's edits in CDTEST's ! 419: Find/Replace dialog. ! 420: ! 421: Returns: Nothing. ! 422: ! 423: Comments: ! 424: ! 425: ************************************************************************/ ! 426: ! 427: void GetFindDlg(HWND hwnd, LPFINDREPLACE pfr) ! 428: { ! 429: TCHAR szNum[30] ; ! 430: BOOL b ; ! 431: ! 432: #define WSIZEFR 30 ! 433: ! 434: GetDlgItemText(hwnd, ID_STRUCTSIZEFT, szNum, WSIZEFR) ; ! 435: pfr->lStructSize = MyAtol(szNum, uMode == IDM_HEXMODE, &b) ; ! 436: ! 437: GetDlgItemText(hwnd, ID_HWNDOWNERFT, szNum, WSIZEFR) ; ! 438: pfr->hwndOwner = (HWND) MyAtol(szNum, uMode == IDM_HEXMODE, &b) ; ! 439: ! 440: GetDlgItemText(hwnd, ID_HINSTANCEFT, szNum, WSIZEFR) ; ! 441: pfr->hInstance = (HANDLE) MyAtol(szNum, uMode == IDM_HEXMODE, &b) ; ! 442: ! 443: GetDlgItemText(hwnd, ID_FLAGSFT, szNum, WSIZEFR) ; ! 444: pfr->Flags = MyAtol(szNum, uMode == IDM_HEXMODE, &b) ; ! 445: ! 446: ! 447: GetDlgItemText(hwnd, ID_FINDWHATFT, szFindWhat, 100) ; ! 448: ! 449: GetDlgItemText(hwnd, ID_REPLACEWITHFT, szReplaceWith, 100) ; ! 450: ! 451: ! 452: GetDlgItemText(hwnd, ID_FINDWHATLENFT, szNum, WSIZEFR) ; ! 453: pfr->wFindWhatLen = (WORD) MyAtol(szNum, uMode == IDM_HEXMODE, &b) ; ! 454: ! 455: GetDlgItemText(hwnd, ID_REPLACEWITHLENFT, szNum, WSIZEFR) ; ! 456: pfr->wReplaceWithLen = (WORD) MyAtol(szNum, uMode == IDM_HEXMODE, &b) ; ! 457: ! 458: GetDlgItemText(hwnd, ID_CUSTDATAFT, szNum, WSIZEFR) ; ! 459: pfr->lCustData = MyAtol(szNum, uMode == IDM_HEXMODE, &b) ; ! 460: ! 461: GetDlgItemText(hwnd, ID_HOOKFT, szNum, WSIZEFR) ; ! 462: pfr->lpfnHook = (LPFRHOOKPROC) MyAtol(szNum, uMode == IDM_HEXMODE, &b) ; ! 463: ! 464: GetDlgItemText(hwnd, ID_TEMPLATEFT, szTemplate, 40) ; ! 465: } ! 466: ! 467: ! 468: ! 469: ! 470: ! 471: ! 472: /************************************************************************ ! 473: ! 474: Function: FindReplaceHookProc(HWND, UINT, UINT, LONG) ! 475: ! 476: Purpose: Is the callback function that will be called by FindText() ! 477: or ReplaceText() if the function is called with the ! 478: FR_ENABLEHOOK flag. ! 479: ! 480: ! 481: Returns: TRUE to discard the message, and FALSE to instruct the common ! 482: dialogs to process the message with the default logic. ! 483: ! 484: Comments: ! 485: ! 486: NOTE! ! 487: ! 488: If the application returns FALSE in response to the WM_INITDIALOG ! 489: message, it is then responsible for displaying the dialog by ! 490: calling ShowWindow() and UpdateWindow(). ! 491: ! 492: ***********************************************************************/ ! 493: ! 494: ! 495: UINT APIENTRY FindReplaceHookProc(HWND hwnd, UINT msg, UINT wParam, LONG lParam) ! 496: { ! 497: LPFINDREPLACE pFr ; ! 498: TCHAR szMsg[75] ; ! 499: TCHAR szTmp[20] ; ! 500: int i ; ! 501: TCHAR szDefString[] = TEXT("Default String ") ; ! 502: ! 503: switch(msg) ! 504: { ! 505: case WM_INITDIALOG: ! 506: ! 507: pFr = (LPFINDREPLACE) lParam ; ! 508: ! 509: if (pFr->lCustData != 0L) ! 510: { ! 511: wsprintf(szMsg, TEXT("FINDREPLACE->lCustData is: %ld"), pFr->lCustData) ; ! 512: ! 513: MessageBox(hwnd, szMsg, TEXT("lCustData Sent!"), MB_OK | MB_APPLMODAL) ; ! 514: } ! 515: ! 516: SetWindowText(hwnd, TEXT("Find Hook Proc Dialog")) ; ! 517: ! 518: if (GetDlgItem(hwnd, ID_DEFSTRINGS)) ! 519: { ! 520: for (i=0; i<5; i++) ! 521: { ! 522: lstrcpy(szMsg, szDefString) ; ! 523: wsprintf(szTmp, TEXT("Number %d"), i+1) ; ! 524: lstrcat(szMsg, szTmp) ; ! 525: SendDlgItemMessage(hwnd, ID_DEFSTRINGS, LB_ADDSTRING, (WPARAM) 0, ! 526: (LONG) (LPTSTR) szMsg) ; ! 527: } ! 528: } ! 529: ! 530: return TRUE ; ! 531: ! 532: break ; ! 533: ! 534: ! 535: ! 536: /* use the WM_CTLCOLOR* messages to change the color of the Open ! 537: dialog */ ! 538: ! 539: case WM_CTLCOLORDLG: ! 540: ! 541: if (!hBrushDlg) ! 542: hBrushDlg = GetStockObject(LTGRAY_BRUSH) ; ! 543: ! 544: return (UINT) hBrushDlg ; ! 545: ! 546: break ; ! 547: ! 548: ! 549: case WM_CTLCOLORBTN: ! 550: ! 551: SetBkMode((HDC) wParam, TRANSPARENT) ; //sets background color ! 552: //for push and check box ! 553: //buttons... ! 554: ! 555: if (!hBrushButton) ! 556: hBrushButton = GetStockObject(LTGRAY_BRUSH) ; ! 557: ! 558: return (UINT) hBrushButton ; ! 559: ! 560: break ; ! 561: ! 562: ! 563: case WM_CTLCOLORSTATIC: ! 564: ! 565: SetTextColor((HDC) wParam, RGB(0x00, 0xff, 0x00)) ; //green ! 566: SetBkMode((HDC) wParam, TRANSPARENT) ; //transparent text ! 567: ! 568: if (!hBrushDlg) ! 569: hBrushDlg = GetStockObject(LTGRAY_BRUSH) ; ! 570: ! 571: return (UINT) hBrushDlg ; ! 572: ! 573: break ; ! 574: ! 575: ! 576: default: ! 577: break ; ! 578: } ! 579: ! 580: return FALSE ; //send msg to the common dialog code ! 581: } ! 582: ! 583: ! 584: ! 585: ! 586: ! 587: ! 588: ! 589: ! 590: ! 591: /************************************************************************ ! 592: ! 593: Function: GetFindDlgHandle(void) ! 594: ! 595: Purpose: Finds, loads, and returns a handle to the custom template ! 596: for FindText() in CDTEST.EXE. ! 597: ! 598: Returns: HANDLE to the dialog resource. ! 599: ! 600: Comments: ! 601: ! 602: ************************************************************************/ ! 603: ! 604: HANDLE GetFindDlgHandle(void) ! 605: { ! 606: hResFind = FindResource(hInst, TEXT("fttemp1"), RT_DIALOG) ; ! 607: ! 608: hDialogFind = LoadResource(hInst, hResFind) ; ! 609: ! 610: ! 611: return hDialogFind ; ! 612: } ! 613: ! 614: ! 615: ! 616: ! 617: ! 618: /************************************************************************ ! 619: ! 620: Function: GetReplaceDlgHandle(void) ! 621: ! 622: Purpose: Finds, loads, and returns a handle to the custom template ! 623: for ReplaceText() in CDTEST.EXE. ! 624: ! 625: Returns: HANDLE to the dialog resource. ! 626: ! 627: Comments: ! 628: ! 629: ************************************************************************/ ! 630: ! 631: HANDLE GetReplaceDlgHandle(void) ! 632: { ! 633: hResFind = FindResource(hInst, TEXT("fttemp2"), RT_DIALOG) ; ! 634: ! 635: hDialogFind = LoadResource(hInst, hResFind) ; ! 636: ! 637: return hDialogFind ; ! 638: } ! 639: ! 640: ! 641: ! 642: ! 643: ! 644: ! 645: /************************************************************************ ! 646: ! 647: Function: DoFindReplaceStuff(LPFINDREPLACE) ! 648: ! 649: Purpose: Calls FindText() or ReplaceText(). ! 650: ! 651: Returns: Nothing: ! 652: ! 653: Comments: ! 654: ! 655: ************************************************************************/ ! 656: ! 657: void DoFindRepStuff(LPFINDREPLACE pfr) ! 658: { ! 659: if (IsDlgButtonChecked(hwndMainDialog, ID_PRELOADEDFIND) == 1) ! 660: { ! 661: if (bDoFindDlg) ! 662: pfr->hInstance = GetFindDlgHandle() ; ! 663: else ! 664: pfr->hInstance = GetReplaceDlgHandle() ; ! 665: } ! 666: ! 667: if (bDoFindDlg) ! 668: { ! 669: if (IsDlgButtonChecked(hwndMainDialog, ID_FRNULLSTRUCT) == 1) ! 670: { ! 671: hwndFind = FindText((LPFINDREPLACE) NULL) ; ! 672: } ! 673: else ! 674: { ! 675: hwndFind = FindText(pfr) ; ! 676: } ! 677: } ! 678: else ! 679: { ! 680: if (IsDlgButtonChecked(hwndMainDialog, ID_FRNULLSTRUCT) == 1) ! 681: { ! 682: hwndFind = ReplaceText((LPFINDREPLACE) NULL) ; ! 683: } ! 684: else ! 685: { ! 686: hwndFind = ReplaceText(pfr) ; ! 687: } ! 688: ! 689: } ! 690: ! 691: ! 692: wsprintf(szTemp, szLongFilter, CommDlgExtendedError()) ; ! 693: SetDlgItemText(hwndMainDialog, ID_ERRORFT, szTemp) ; ! 694: ! 695: wsprintf(szTemp, szLongFilter, hwndFind) ; ! 696: SetDlgItemText(hwndMainDialog, ID_RETURNFT, szTemp) ; ! 697: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.