Hello, I'm trying to use the Find common dialog, according to the Platform SDK you have to call RegisterWindowMessage to get a message identifier for the FINDMSGSTRING registered message. So,
Since I get a value (not 0) in FR_MSG, I think this works. Next, you have to initialize the FINDREPLACE structure filling the hwndOwner member with the handle to the window that should receive the messages. I' using the 'Main' window handle. Then call FindText. I get the dialog so this works also. Also the main message loop should call IsDialogMessage to ensure the dialog correctly processes keyboard messages. This works. Now (Finally) for the problem. I should be able to catch the messages sent from the dialog in the main message handler routine. Example,
.data FINDMSGSTRING db "commdlg_FindReplace",0 .data? FR_MSG dd ? .code invoke RegisterWindowMessage,addr FINDMSGSTRING mov FR_MSG,eax
I'm getting a compiler error A2070 : invalid instruction operands at the line .elseif uMsg == FR_MSG Can anyone see whats wrong ? Or tell me how you got it to work ?
WndProc proc hWin:DWORD,uMsg:DWORD,wParam:DWORD,lParam:DWORD .if uMsg == WM_CREATE (do stuff) .elseif uMsg == WM_COMMAND (do stuff) .elseif uMsg == FR_MSG (do stuff) .endif invoke DefWindowProc,hWin,uMsg,wParam,lParam ret WndProc endp
the answer is really easy i think: FR_MSG is a variable. you can't compare a variable with another like you did: .elseif uMsg==FR_MSG the solution would be to put mov eax,uMsg before the first .if and the compare eax with FR_MSG
Thanks , You were right, now it works perfectly :)