It looks like some other programs got broke too. This email program I'm using (The Bat) now has some problems with Tabs. Obviously the patch I submited is wrong.
Sunday, May 18, 2003, 3:16:40 PM, you wrote:
On Sun, 2003-05-18 at 22:29, Vitaliy Margolen wrote:
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 little bug report:
Vitaliy, with your patch it breaks emule, In the search edit box (where you type what you're looking for) if you press enter, emule think it has been pressed twice. Without your patch it was ok
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.
a+
Max