Sergio sdelreal@codeweavers.com wrote:
@@ -701,7 +701,10 @@ static HWND DIALOG_CreateIndirect( HINSTANCE hInst, LPCVOID dlgTemplate,
if (template.style & WS_VISIBLE && !(GetWindowLongW( hwnd, GWL_STYLE ) & WS_VISIBLE)) {
HWND hwnd_capture; ShowWindow( hwnd, SW_SHOWNORMAL ); /* SW_SHOW doesn't always work */if ( (hwnd_capture = GetCapture()) && !IsChild( hwnd, hwnd_capture ) && modal_owner )SendMessageW(hwnd_capture, WM_CANCELMODE, 0, 0); }
This is most likely wrong, WM_CANCELMODE should be sent when the capturing window loses focus during ShowWindow( hwnd, SW_SHOWNORMAL ) call.
+static INT_PTR CALLBACK TestModalDlgWithCaptureProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) +{
- struct recvd_message msg;
- if (ignore_message( message )) return 0;
- switch (message)
- {
case WM_NCHITTEST:return HTCLIENT;case WM_QUERYNEWPALETTE:case WM_GETTEXT:case WM_WINDOWPOSCHANGING:case WM_WINDOWPOSCHANGED:case WM_NCPAINT:case WM_NCACTIVATE:case WM_NCCALCSIZE:case WM_NCDESTROY:case WM_PAINT:case WM_ERASEBKGND:case WM_ACTIVATEAPP:case WM_CTLCOLORDLG:case WM_CTLCOLORBTN:case WM_SETFOCUS:case WM_KILLFOCUS:case 0x90:break;
The fact that you need to filter out so many messages is a clear sign that the test is broken. Same comment applies for the next message proc.