Hi,
--- Alexandre Julliard julliard@winehq.org wrote:
The IsWindow check is useless, what you need is to verify that it's really a combobox. The right way to do that is probably to send a CB_GETCOMBOBOXINFO message instead.
How about something like this instead?
Index: dlls/user/combo.c =================================================================== RCS file: /home/wine/wine/dlls/user/combo.c,v retrieving revision 1.8 diff -u -r1.8 combo.c --- dlls/user/combo.c 23 Dec 2004 17:21:05 -0000 1.8 +++ dlls/user/combo.c 15 Mar 2005 19:09:52 -0000 @@ -27,7 +27,6 @@ * If you discover missing features, or bugs, please note them below. * * TODO: - * - GetComboBoxInfo() * - ComboBox_[GS]etMinVisible() * - CB_GETCOMBOBOXINFO * - CB_GETMINVISIBLE, CB_SETMINVISIBLE @@ -2293,10 +2292,27 @@ /************************************************************************* * GetComboBoxInfo (USER32.@) */ -BOOL WINAPI GetComboBoxInfo(HWND hwndCombo, /* [in] handle to combo box */ - PCOMBOBOXINFO pcbi /* [in/out] combo box information */) -{ - FIXME("\n"); - return FALSE; - +BOOL WINAPI +GetComboBoxInfo(HWND hwndCombo, /* [in] handle to combo box */ + PCOMBOBOXINFO pcbi /* [in/out] combo box information */) +{ + static const WCHAR ComboBoxW[] = { 'C', 'o', 'm', 'b', 'o', 'B', 'o', 'x', 0 }; + CHAR szBuffer[MAX_PATH + 1]; + int dwSize; + LPHEADCOMBO lphc; + + dwSize = GetClassNameW(hwndCombo, szBuffer, sizeof(szBuffer)/sizeof(szBuffer[0])-1); + + if (lstrcmpiW(szBuffer, ComboBoxW) != 0) + return FALSE; + + lphc = (LPHEADCOMBO)GetWindowLongPtrW( hwndCombo, 0 ); + + pcbi->hwndCombo = hwndCombo; + pcbi->hwndList = lphc->hWndLBox; + pcbi->hwndItem = lphc->hWndEdit; + pcbi->rcItem = lphc->textRect; + pcbi->rcButton = lphc->buttonRect; + pcbi->stateButton = lphc->wState; + return TRUE; }
__________________________________ Do you Yahoo!? Read only the mail you want - Yahoo! Mail SpamGuard. http://promotions.yahoo.com/new_mail