TAB doesn't work for controls anymore

Maxime Bellengé maxime.bellenge at laposte.net
Sun May 18 16:16:40 CDT 2003


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

-- 
Maxime Bellengé <maxime.bellenge at laposte.net>




More information about the wine-devel mailing list