Changeset 3243 for trunk/src/comdlg32/finddlg32.cpp
- Timestamp:
- Mar 26, 2000, 6:34:57 PM (25 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/comdlg32/finddlg32.cpp
r1557 r3243 1 /* $Id: finddlg32.cpp,v 1. 2 1999-11-02 20:37:43 sandervlExp $ */1 /* $Id: finddlg32.cpp,v 1.3 2000-03-26 16:31:44 cbratschi Exp $ */ 2 2 /* 3 3 * Common Dialog Boxes interface (32 bit) (990815) … … 5 5 * 6 6 * Copyright 1998,1999 Bertho A. Stultiens 7 * 8 * Corel WINE 20000324 level 7 9 */ 8 10 … … 24 26 /*-----------------------------------------------------------------------*/ 25 27 26 static UINT 27 static UINT 28 29 #define FR_MASK 28 static UINT FindReplaceMessage; 29 static UINT HelpMessage; 30 31 #define FR_MASK (FR_DOWN | FR_MATCHCASE | FR_WHOLEWORD | FR_REPLACEALL | FR_REPLACE | FR_FINDNEXT | FR_DIALOGTERM) 30 32 /* CRITICAL_SECTION COMDLG32_CritSect; */ 31 33 … … 49 51 50 52 /*********************************************************************** 51 * COMDLG32_FR_GetFlags[internal]53 * COMDLG32_FR_GetFlags [internal] 52 54 * Returns the button state that needs to be reported to the caller. 53 * 54 * 55 * RETURNS 56 * Current state of check and radio buttons 55 57 */ 56 58 static DWORD COMDLG32_FR_GetFlags(HWND hDlgWnd) 57 59 { 58 59 60 61 62 63 64 60 DWORD flags = 0; 61 if(IsDlgButtonChecked(hDlgWnd, rad2) == BST_CHECKED) 62 flags |= FR_DOWN; 63 if(IsDlgButtonChecked(hDlgWnd, chx1) == BST_CHECKED) 64 flags |= FR_WHOLEWORD; 65 if(IsDlgButtonChecked(hDlgWnd, chx2) == BST_CHECKED) 66 flags |= FR_MATCHCASE; 65 67 return flags; 66 68 } 67 69 68 70 /*********************************************************************** 69 * COMDLG32_FR_HandleWMCommand[internal]71 * COMDLG32_FR_HandleWMCommand [internal] 70 72 * Handle WM_COMMAND messages... 71 73 */ 72 74 static void COMDLG32_FR_HandleWMCommand(HWND hDlgWnd, COMDLG32_FR_Data *pData, int Id, int NotifyCode) 73 75 { 74 75 76 pData->user_fr.fra->Flags &= ~FR_MASK;/* Clear return flags */77 if(pData->fr.Flags & FR_WINE_REPLACE)/* Replace always goes down... */78 79 80 81 { 82 83 84 85 76 DWORD flag; 77 78 pData->user_fr.fra->Flags &= ~FR_MASK; /* Clear return flags */ 79 if(pData->fr.Flags & FR_WINE_REPLACE) /* Replace always goes down... */ 80 pData->user_fr.fra->Flags |= FR_DOWN; 81 82 if(NotifyCode == BN_CLICKED) 83 { 84 switch(Id) 85 { 86 case IDOK: /* Find Next */ 87 if(GetDlgItemTextA(hDlgWnd, edt1, pData->fr.lpstrFindWhat, pData->fr.wFindWhatLen) > 0) 86 88 { 87 89 pData->user_fr.fra->Flags |= COMDLG32_FR_GetFlags(hDlgWnd) | FR_FINDNEXT; 88 90 if(pData->fr.Flags & FR_WINE_UNICODE) 89 91 { 90 92 lstrcpyAtoW(pData->user_fr.frw->lpstrFindWhat, pData->fr.lpstrFindWhat); 91 93 } 92 94 else 93 95 { 94 96 lstrcpyA(pData->user_fr.fra->lpstrFindWhat, pData->fr.lpstrFindWhat); 95 97 } 96 98 SendMessageA(pData->fr.hwndOwner, FindReplaceMessage, 0, (LPARAM)pData->user_fr.fra); 97 99 } 98 99 100 101 102 103 104 100 break; 101 102 case IDCANCEL: 103 pData->user_fr.fra->Flags |= COMDLG32_FR_GetFlags(hDlgWnd) | FR_DIALOGTERM; 104 SendMessageA(pData->fr.hwndOwner, FindReplaceMessage, 0, (LPARAM)pData->user_fr.fra); 105 DestroyWindow(hDlgWnd); 106 break; 105 107 106 108 case psh2: /* Replace All */ 107 109 flag = FR_REPLACEALL; 108 110 goto Replace; 109 111 110 112 case psh1: /* Replace */ 111 113 flag = FR_REPLACE; 112 114 Replace: 113 115 if((pData->fr.Flags & FR_WINE_REPLACE) 114 116 && GetDlgItemTextA(hDlgWnd, edt1, pData->fr.lpstrFindWhat, pData->fr.wFindWhatLen) > 0) 115 117 { 116 117 118 118 pData->fr.lpstrReplaceWith[0] = 0; /* In case the next GetDlgItemText Fails */ 119 GetDlgItemTextA(hDlgWnd, edt2, pData->fr.lpstrReplaceWith, pData->fr.wReplaceWithLen); 120 pData->user_fr.fra->Flags |= COMDLG32_FR_GetFlags(hDlgWnd) | flag; 119 121 if(pData->fr.Flags & FR_WINE_UNICODE) 120 122 { 121 122 123 lstrcpyAtoW(pData->user_fr.frw->lpstrFindWhat, pData->fr.lpstrFindWhat); 124 lstrcpyAtoW(pData->user_fr.frw->lpstrReplaceWith, pData->fr.lpstrReplaceWith); 123 125 } 124 126 else 125 127 { 126 127 128 lstrcpyA(pData->user_fr.fra->lpstrFindWhat, pData->fr.lpstrFindWhat); 129 lstrcpyA(pData->user_fr.fra->lpstrReplaceWith, pData->fr.lpstrReplaceWith); 128 130 } 129 131 SendMessageA(pData->fr.hwndOwner, FindReplaceMessage, 0, (LPARAM)pData->user_fr.fra); 130 132 } 131 132 133 134 135 136 133 break; 134 135 case pshHelp: 136 pData->user_fr.fra->Flags |= COMDLG32_FR_GetFlags(hDlgWnd); 137 SendMessageA(pData->fr.hwndOwner, HelpMessage, (WPARAM)hDlgWnd, (LPARAM)pData->user_fr.fra); 138 break; 137 139 } 138 140 } 139 141 else if(NotifyCode == EN_CHANGE && Id == edt1) 140 141 142 142 { 143 BOOL enable = SendDlgItemMessageA(hDlgWnd, edt1, WM_GETTEXTLENGTH, 0, 0) > 0; 144 EnableWindow(GetDlgItem(hDlgWnd, IDOK), enable); 143 145 if(pData->fr.Flags & FR_WINE_REPLACE) 144 146 { 145 146 147 } 148 149 } 150 151 /*********************************************************************** 152 * COMDLG32_FindReplaceDlgProc[internal]147 EnableWindow(GetDlgItem(hDlgWnd, psh1), enable); 148 EnableWindow(GetDlgItem(hDlgWnd, psh2), enable); 149 } 150 } 151 } 152 153 /*********************************************************************** 154 * COMDLG32_FindReplaceDlgProc [internal] 153 155 * [Find/Replace]Text32[A/W] window procedure. 154 156 */ 155 157 static BOOL CALLBACK COMDLG32_FindReplaceDlgProc(HWND hDlgWnd, UINT iMsg, WPARAM wParam, LPARAM lParam) 156 158 { 157 158 159 160 159 COMDLG32_FR_Data *pdata = (COMDLG32_FR_Data *)GetPropA(hDlgWnd, (LPSTR)COMDLG32_Atom); 160 BOOL retval = TRUE;; 161 162 if(iMsg == WM_INITDIALOG) 161 163 { 162 164 pdata = (COMDLG32_FR_Data *)lParam; 163 164 { 165 166 165 if(!SetPropA(hDlgWnd, (LPSTR)COMDLG32_Atom, (HANDLE)pdata)) 166 { 167 ERR("Could not Set prop; invent a gracefull exit?...\n"); 168 DestroyWindow(hDlgWnd); 167 169 return FALSE; 168 170 } 169 170 171 SendDlgItemMessageA(hDlgWnd, edt1, EM_SETLIMITTEXT, (WPARAM)pdata->fr.wFindWhatLen, 0); 172 SendDlgItemMessageA(hDlgWnd, edt1, WM_SETTEXT, 0, (LPARAM)pdata->fr.lpstrFindWhat); 171 173 if(pdata->fr.Flags & FR_WINE_REPLACE) 172 174 { 173 174 175 } 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 175 SendDlgItemMessageA(hDlgWnd, edt2, EM_SETLIMITTEXT, (WPARAM)pdata->fr.wReplaceWithLen, 0); 176 SendDlgItemMessageA(hDlgWnd, edt2, WM_SETTEXT, 0, (LPARAM)pdata->fr.lpstrReplaceWith); 177 } 178 179 if(!(pdata->fr.Flags & FR_SHOWHELP)) 180 ShowWindow(GetDlgItem(hDlgWnd, pshHelp), SW_HIDE); 181 if(pdata->fr.Flags & FR_HIDEUPDOWN) 182 { 183 ShowWindow(GetDlgItem(hDlgWnd, rad1), SW_HIDE); 184 ShowWindow(GetDlgItem(hDlgWnd, rad2), SW_HIDE); 185 ShowWindow(GetDlgItem(hDlgWnd, grp1), SW_HIDE); 186 } 187 else if(pdata->fr.Flags & FR_NOUPDOWN) 188 { 189 EnableWindow(GetDlgItem(hDlgWnd, rad1), FALSE); 190 EnableWindow(GetDlgItem(hDlgWnd, rad2), FALSE); 191 EnableWindow(GetDlgItem(hDlgWnd, grp1), FALSE); 192 } 191 193 else 192 194 { 193 194 195 } 196 197 198 199 200 195 SendDlgItemMessageA(hDlgWnd, rad1, BM_SETCHECK, pdata->fr.Flags & FR_DOWN ? 0 : BST_CHECKED, 0); 196 SendDlgItemMessageA(hDlgWnd, rad2, BM_SETCHECK, pdata->fr.Flags & FR_DOWN ? BST_CHECKED : 0, 0); 197 } 198 199 if(pdata->fr.Flags & FR_HIDEMATCHCASE) 200 ShowWindow(GetDlgItem(hDlgWnd, chx2), SW_HIDE); 201 else if(pdata->fr.Flags & FR_NOMATCHCASE) 202 EnableWindow(GetDlgItem(hDlgWnd, chx2), FALSE); 201 203 else 202 203 204 205 206 207 204 SendDlgItemMessageA(hDlgWnd, chx2, BM_SETCHECK, pdata->fr.Flags & FR_MATCHCASE ? BST_CHECKED : 0, 0); 205 206 if(pdata->fr.Flags & FR_HIDEWHOLEWORD) 207 ShowWindow(GetDlgItem(hDlgWnd, chx1), SW_HIDE); 208 else if(pdata->fr.Flags & FR_NOWHOLEWORD) 209 EnableWindow(GetDlgItem(hDlgWnd, chx1), FALSE); 208 210 else 209 210 211 211 SendDlgItemMessageA(hDlgWnd, chx1, BM_SETCHECK, pdata->fr.Flags & FR_WHOLEWORD ? BST_CHECKED : 0, 0); 212 213 /* We did the init here, now call the hook if requested */ 212 214 #ifdef __WIN32OS2__ 213 214 215 216 215 //SvL: If hooked and hook returns TRUE, then show dialog 216 // -> if not hooked, just display it! 217 if(!(pdata->fr.Flags & FR_ENABLEHOOK) || 218 pdata->fr.lpfnHook(hDlgWnd, iMsg, wParam, pdata->fr.lCustData)) 217 219 #else 218 219 220 if((pdata->fr.Flags & FR_ENABLEHOOK) 221 && pdata->fr.lpfnHook(hDlgWnd, iMsg, wParam, pdata->fr.lCustData)) 220 222 #endif 221 222 223 224 225 223 { 224 ShowWindow(hDlgWnd, SW_SHOWNORMAL); 225 UpdateWindow(hDlgWnd); 226 } 227 /* else the caller is responsible for showing */ 226 228 return TRUE; 227 229 } 228 230 229 230 231 232 233 234 235 236 237 { 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 retval = FALSE;/* We did not handle the message */262 231 if(pdata && (pdata->fr.Flags & FR_ENABLEHOOK)) 232 { 233 retval = pdata->fr.lpfnHook(hDlgWnd, iMsg, wParam, lParam); 234 } 235 else 236 retval = FALSE; 237 238 if(pdata && !retval) 239 { 240 retval = TRUE; 241 switch(iMsg) 242 { 243 case WM_COMMAND: 244 COMDLG32_FR_HandleWMCommand(hDlgWnd, pdata, LOWORD(wParam), HIWORD(wParam)); 245 break; 246 247 case WM_CLOSE: 248 COMDLG32_FR_HandleWMCommand(hDlgWnd, pdata, IDCANCEL, BN_CLICKED); 249 break; 250 251 case WM_HELP: 252 /* Heeeeelp! */ 253 FIXME("Got WM_HELP. Who is gonna supply it?\n"); 254 break; 255 256 case WM_CONTEXTMENU: 257 /* Heeeeelp! */ 258 FIXME("Got WM_CONTEXTMENU. Who is gonna supply it?\n"); 259 break; 260 /* FIXME: Handle F1 help */ 261 262 default: 263 retval = FALSE; /* We did not handle the message */ 264 } 263 265 } 264 266 … … 269 271 if(iMsg == WM_DESTROY) 270 272 { 271 272 273 RemovePropA(hDlgWnd, (LPSTR)COMDLG32_Atom); 274 HeapFree(GetProcessHeap(), 0, pdata); 273 275 } 274 276 … … 277 279 278 280 /*********************************************************************** 279 * COMDLG32_FR_CheckPartial[internal]281 * COMDLG32_FR_CheckPartial [internal] 280 282 * Check various fault conditions in the supplied parameters that 281 283 * cause an extended error to be reported. 282 * 283 * 284 * 284 * RETURNS 285 * TRUE: Succes 286 * FALSE: Failure 285 287 */ 286 288 static BOOL COMDLG32_FR_CheckPartial( 287 LPFINDREPLACEA pfr,/* [in] Find structure */288 BOOL Replace 289 LPFINDREPLACEA pfr, /* [in] Find structure */ 290 BOOL Replace /* [in] True if called as replace */ 289 291 ) { 290 291 { 292 293 return FALSE; 294 292 if(!pfr) 293 { 294 COMDLG32_SetCommDlgExtendedError(CDERR_GENERALCODES); 295 return FALSE; 296 } 295 297 296 298 if(pfr->lStructSize != sizeof(FINDREPLACEA)) 297 299 { 298 299 300 COMDLG32_SetCommDlgExtendedError(CDERR_STRUCTSIZE); 301 return FALSE; 300 302 } 301 303 302 304 if(!IsWindow(pfr->hwndOwner)) 303 305 { 304 305 306 COMDLG32_SetCommDlgExtendedError(CDERR_DIALOGFAILURE); 307 return FALSE; 306 308 } 307 309 308 310 #ifdef __WIN32OS2__ 309 310 311 //SvL: Notepad set this to 32 312 if((!pfr->lpstrFindWhat) 311 313 #else 312 314 if((pfr->wFindWhatLen < 80 || !pfr->lpstrFindWhat) 313 315 #endif 314 316 ||(Replace && (pfr->wReplaceWithLen < 80 || !pfr->lpstrReplaceWith))) 315 317 { 316 317 return FALSE; 318 } 319 320 321 { 322 323 return FALSE; 324 } 325 326 { 327 318 COMDLG32_SetCommDlgExtendedError(FRERR_BUFFERLENGTHZERO); 319 return FALSE; 320 } 321 322 if((FindReplaceMessage = RegisterWindowMessageA(FINDMSGSTRING)) == 0) 323 { 324 COMDLG32_SetCommDlgExtendedError(CDERR_REGISTERMSGFAIL); 325 return FALSE; 326 } 327 if((HelpMessage = RegisterWindowMessageA(HELPMSGSTRING)) == 0) 328 { 329 COMDLG32_SetCommDlgExtendedError(CDERR_REGISTERMSGFAIL); 328 330 return FALSE; 329 331 } … … 331 333 if((pfr->Flags & FR_ENABLEHOOK) && !pfr->lpfnHook) 332 334 { 333 335 COMDLG32_SetCommDlgExtendedError(CDERR_NOHOOK); 334 336 return FALSE; 335 337 } … … 337 339 if((pfr->Flags & (FR_ENABLETEMPLATE | FR_ENABLETEMPLATEHANDLE)) && !pfr->hInstance) 338 340 { 339 341 COMDLG32_SetCommDlgExtendedError(CDERR_NOHINSTANCE); 340 342 return FALSE; 341 343 } … … 343 345 if((pfr->Flags & FR_ENABLETEMPLATE) && !pfr->lpTemplateName) 344 346 { 345 346 return FALSE; 347 } 348 349 350 } 351 352 /*********************************************************************** 353 * COMDLG32_FR_DoFindReplace[internal]347 COMDLG32_SetCommDlgExtendedError(CDERR_NOTEMPLATE); 348 return FALSE; 349 } 350 351 return TRUE; 352 } 353 354 /*********************************************************************** 355 * COMDLG32_FR_DoFindReplace [internal] 354 356 * Actual load and creation of the Find/Replace dialog. 355 * 356 * 357 * 357 * RETURNS 358 * Window handle to created dialog:Succes 359 * NULL:Failure 358 360 */ 359 361 static HWND COMDLG32_FR_DoFindReplace( 360 COMDLG32_FR_Data *pdata/* [in] Internal data structure */362 COMDLG32_FR_Data *pdata /* [in] Internal data structure */ 361 363 ) { 362 364 HWND hdlgwnd = 0; 363 365 HGLOBAL loadrc; 364 366 DWORD error; 365 367 LPDLGTEMPLATEW rcs; 366 368 367 369 TRACE("hInst=%08x, Flags=%08lx\n", pdata->fr.hInstance, pdata->fr.Flags); 368 370 369 371 if(!(pdata->fr.Flags & FR_ENABLETEMPLATEHANDLE)) 370 372 { 371 372 373 374 375 373 HMODULE hmod = COMDLG32_hInstance; 374 HRSRC htemplate; 375 if(pdata->fr.Flags & FR_ENABLETEMPLATE) 376 { 377 hmod = (HMODULE)pdata->fr.hInstance; 376 378 if(pdata->fr.Flags & FR_WINE_UNICODE) 377 379 { 378 380 htemplate = FindResourceW(hmod, (LPWSTR)pdata->fr.lpTemplateName, (LPWSTR)RT_DIALOGA); 379 381 } 380 382 else 381 383 { 382 384 htemplate = FindResourceA(hmod, pdata->fr.lpTemplateName, (LPCSTR)RT_DIALOGA); 383 385 } 384 385 386 387 388 389 390 391 392 393 394 395 396 397 386 } 387 else 388 { 389 int rcid = pdata->fr.Flags & FR_WINE_REPLACE ? REPLACEDLGORD 390 : FINDDLGORD; 391 htemplate = FindResourceA(hmod, MAKEINTRESOURCEA(rcid), (LPCSTR)RT_DIALOGA); 392 } 393 if(!htemplate) 394 { 395 error = CDERR_FINDRESFAILURE; 396 goto cleanup; 397 } 398 399 loadrc = LoadResource(hmod, htemplate); 398 400 } 399 401 else 400 402 { 401 403 loadrc = (HGLOBAL)pdata->fr.hInstance; 402 404 } 403 405 404 406 if(!loadrc) 405 407 { 406 407 408 408 error = CDERR_LOADRESFAILURE; 409 goto cleanup; 410 } 409 411 410 412 if((rcs = (LPDLGTEMPLATEW)LockResource(loadrc)) == NULL) 411 413 { 412 413 414 error = CDERR_LOCKRESFAILURE; 415 goto cleanup; 414 416 } 415 417 416 418 hdlgwnd = CreateDialogIndirectParamA(COMDLG32_hInstance, 417 419 rcs, 418 420 pdata->fr.hwndOwner, 419 421 (DLGPROC)COMDLG32_FindReplaceDlgProc, 420 422 (LPARAM)pdata); 421 422 { 423 423 if(!hdlgwnd) 424 { 425 error = CDERR_DIALOGFAILURE; 424 426 cleanup: 425 427 COMDLG32_SetCommDlgExtendedError(error); 426 428 HeapFree(GetProcessHeap(), 0, pdata); 427 429 } … … 430 432 431 433 /*********************************************************************** 432 * FindText32A[COMDLG32.6]433 * 434 * 435 * 434 * FindText32A [COMDLG32.6] 435 * RETURNS 436 * Window handle to created dialog: Succes 437 * NULL: Failure 436 438 */ 437 439 HWND WINAPI FindTextA( 438 LPFINDREPLACEA pfr/* [in] Find/replace structure*/440 LPFINDREPLACEA pfr /* [in] Find/replace structure*/ 439 441 ) { 440 442 COMDLG32_FR_Data *pdata; 441 443 442 444 dprintf(("FindTextA: LPFINDREPLACE=%p\n", pfr)); 443 445 444 445 446 447 448 446 if(!COMDLG32_FR_CheckPartial(pfr, FALSE)) 447 return 0; 448 449 if((pdata = (COMDLG32_FR_Data *)COMDLG32_AllocMem(sizeof(COMDLG32_FR_Data))) == NULL) 450 return 0; /* Error has been set */ 449 451 450 452 pdata->user_fr.fra = pfr; 451 453 pdata->fr = *pfr; 452 453 } 454 455 /*********************************************************************** 456 * ReplaceText32A[COMDLG32.19]457 * 458 * 459 * 454 return COMDLG32_FR_DoFindReplace(pdata); 455 } 456 457 /*********************************************************************** 458 * ReplaceText32A [COMDLG32.19] 459 * RETURNS 460 * Window handle to created dialog: Succes 461 * NULL: Failure 460 462 */ 461 463 HWND WINAPI ReplaceTextA( 462 LPFINDREPLACEA pfr/* [in] Find/replace structure*/464 LPFINDREPLACEA pfr /* [in] Find/replace structure*/ 463 465 ) { 464 466 COMDLG32_FR_Data *pdata; 465 467 466 468 dprintf(("ReplaceTextA: LPFINDREPLACE=%p\n", pfr)); 467 469 468 469 470 471 472 470 if(!COMDLG32_FR_CheckPartial(pfr, TRUE)) 471 return 0; 472 473 if((pdata = (COMDLG32_FR_Data *)COMDLG32_AllocMem(sizeof(COMDLG32_FR_Data))) == NULL) 474 return 0; /* Error has been set */ 473 475 474 476 pdata->user_fr.fra = pfr; 475 477 pdata->fr = *pfr; 476 477 478 } 479 480 /*********************************************************************** 481 * FinfText32W[COMDLG32.7]482 * 483 * 484 * 478 pdata->fr.Flags |= FR_WINE_REPLACE; 479 return COMDLG32_FR_DoFindReplace(pdata); 480 } 481 482 /*********************************************************************** 483 * FinfText32W [COMDLG32.7] 484 * RETURNS 485 * Window handle to created dialog: Succes 486 * NULL: Failure 485 487 */ 486 488 HWND WINAPI FindTextW( 487 LPFINDREPLACEW pfr/* [in] Find/replace structure*/489 LPFINDREPLACEW pfr /* [in] Find/replace structure*/ 488 490 ) { 489 491 COMDLG32_FR_Data *pdata; 490 492 491 493 dprintf(("FindTextW: LPFINDREPLACE=%p\n", pfr)); 492 494 493 494 495 496 497 498 495 if(!COMDLG32_FR_CheckPartial((LPFINDREPLACEA)pfr, FALSE)) 496 return 0; 497 498 if((pdata = (COMDLG32_FR_Data *)COMDLG32_AllocMem(sizeof(COMDLG32_FR_Data) 499 + pfr->wFindWhatLen)) == NULL) 500 return 0; /* Error has been set */ 499 501 500 502 pdata->user_fr.frw = pfr; 501 pdata->fr = *(LPFINDREPLACEA)pfr; 502 503 pdata->fr.lpstrFindWhat = (LPSTR)(((LPFINDREPLACEA)(pdata+1))+1); 503 pdata->fr = *(LPFINDREPLACEA)pfr; /* FINDREPLACEx have same size */ 504 pdata->fr.Flags |= FR_WINE_UNICODE; 505 pdata->fr.lpstrFindWhat = (LPSTR)(((LPFINDREPLACEA)(pdata+1))+1); /* Set string pointer */ 504 506 lstrcpynWtoA(pdata->fr.lpstrFindWhat, pfr->lpstrFindWhat, pfr->wFindWhatLen); 505 507 return COMDLG32_FR_DoFindReplace(pdata); … … 507 509 508 510 /*********************************************************************** 509 * ReplaceTextW[COMDLG32.20]510 * 511 * 512 * 511 * ReplaceTextW [COMDLG32.20] 512 * RETURNS 513 * Window handle to created dialog: Succes 514 * NULL: Failure 513 515 */ 514 516 HWND WINAPI ReplaceTextW( 515 LPFINDREPLACEW pfr/* [in] Find/replace structure*/517 LPFINDREPLACEW pfr /* [in] Find/replace structure*/ 516 518 ) { 517 519 COMDLG32_FR_Data *pdata; 518 520 519 521 dprintf(("ReplaceTextW: LPFINDREPLACE=%p\n", pfr)); 520 522 521 522 523 524 525 526 527 528 523 if(!COMDLG32_FR_CheckPartial((LPFINDREPLACEA)pfr, FALSE)) 524 return 0; 525 526 if((pdata = (COMDLG32_FR_Data *)COMDLG32_AllocMem(sizeof(COMDLG32_FR_Data) 527 + pfr->wFindWhatLen 528 + pfr->wReplaceWithLen)) == NULL) 529 530 return 0; /* Error has been set */ 529 531 530 532 pdata->user_fr.frw = pfr; 531 pdata->fr = *(LPFINDREPLACEA)pfr; 532 533 pdata->fr.lpstrFindWhat = (LPSTR)(((LPFINDREPLACEA)(pdata+1))+1); 533 pdata->fr = *(LPFINDREPLACEA)pfr; /* FINDREPLACEx have same size */ 534 pdata->fr.Flags |= FR_WINE_REPLACE | FR_WINE_UNICODE; 535 pdata->fr.lpstrFindWhat = (LPSTR)(((LPFINDREPLACEA)(pdata+1))+1); /* Set string pointers */ 534 536 pdata->fr.lpstrReplaceWith = (LPSTR)(((LPFINDREPLACEA)(pdata+1))+1) + pfr->wFindWhatLen; 535 537 lstrcpynWtoA(pdata->fr.lpstrFindWhat, pfr->lpstrFindWhat, pfr->wFindWhatLen);
Note:
See TracChangeset
for help on using the changeset viewer.