Ok, how about this: 77e492b5 837d1800 cmp dword ptr [ebp+0x18],0x0 77e492b9 7407 jz user32!MLEditWndProc+0x223 (77e492c2) 77e492bb 8b450c mov eax,[ebp+0xc] 77e492be 80486204 or byte ptr [eax+0x62],0x4 77e492c2 b88d000000 mov eax,0x8d ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 77e492c7 e9fa09ffff jmp user32!MLEditWndProc+0x6c6 (77e39cc6)
This is part of the EditWndProc from w2k. I'm not saying you are wrong. We both wrong and M$ right :-)
BTW What application is not working? I tested TAB on number of programs I have (word, excel, custom DB app) and TAB working in all of them. :-O
Here is a simple program which with only one edit and a button. Edit should capture both {Return] & [Tab]. Sorry for the size - that's the smallest I could make it. http://www.kievinfo.com/MemoTest.exe
Sunday, May 18, 2003, 12:46:11 PM, you wrote:
On Sun, 18 May 2003 11:54:36 -0600, you wrote:
I am looking into it. It looks odd, but windows, at least Win2k, does return DLGC_HASSETSEL | DLGC_WANTCHARS | DLGC_WANTARROWS | DLGC_WANTMESSAGE always!
Uhh, this is the output of spy++ under win2000, which corresponds to the broken TAB response in Agent:
| <00201> 00030218 P WM_KEYDOWN nVirtKey:VK_TAB cRepeat:1 ScanCode:0F fExtended:0 fAltDown:0 fRepeat:0 fUp:0 [wParam:00000009 lParam:000F0001 time:4:47:52.206] | <00202> 00030218 S ..................WM_GETDLGCODE wParam:00000009 lParam:0012F434 | <00203> 00030218 R ..................WM_GETDLGCODE fuDlgCode:DLGC_WANTARROWS | DLGC_HASSETSEL | DLGC_WANTCHARS [lResult:00000089]
(00030218 is the hwnd of the editcontrol). In my previous email there where two other examples where windows did not return the DLGC_WANTMESSAGE flag. If I did not mention it then: that was with Win2K.
But there is something more going on here. Windows checks for wParam, and if it's not null adds 0x4 to some window/class flag. If this flag is set, control does not react to [ENTER].
I'm trying to find out what this flag is and what wParam is, since it is "currently unused" according to MSDN.
Here is a part of code from windows:
if (wParam) wnd[0x62] |= 0x4; return DLGC_HASSETSEL | DLGC_WANTCHARS | DLGC_WANTARROWS | DLGC_WANTMESSAGE;
Nice for a parameter that is not supposed to be used ;-) Anyway I see that two of my cases have a non NULL wparam , but still don't return DLGC_WANTMESSAGE.
Perhaps you can put a small example on the net that is giving you the problems?
Rein.