TAB doesn't work for controls anymore

Vitaliy Margolen wine-devel at kievinfo.com
Sun May 18 15:29:03 CDT 2003


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. 




More information about the wine-devel mailing list