TAB doesn't work for controls anymore

Vitaliy Margolen wine-devel at kievinfo.com
Sun May 18 17:32:42 CDT 2003


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




More information about the wine-devel mailing list