Paul Gofman <gofmanp(a)gmail.com> writes:
On 8/13/19 12:12, Alexandre Julliard wrote:
Paul Gofman <gofmanp(a)gmail.com> writes:
@@ -1280,11 +1280,38 @@ BOOL WINAPI GetWindowPlacement( HWND hwnd, WINDOWPLACEMENT *wndpl ) } if (pWnd == WND_OTHER_PROCESS) { - if (!IsWindow( hwnd )) return FALSE; - FIXME( "not supported on other process window %p\n", hwnd ); - /* provide some dummy information */ + DWORD style, is_window; + + FIXME( "not fully supported on other process window %p.\n", hwnd ); + + SERVER_START_REQ( set_window_info ) + { + req->handle = wine_server_user_handle( hwnd ); + req->flags = 0; /* don't set anything, just retrieve */ + req->extra_offset = -1; + req->extra_size = 0; + if (wine_server_call_err( req )) + { + style = 0; + is_window = FALSE; + } + else + { + style = reply->old_style; + is_window = TRUE; + } + } + SERVER_END_REQ; + + if (!is_window) + return FALSE; You can use GetWindowLong() for this, there's no need to add a server call here.
This will add an extra server call for other process window from GetWindowLong(). The two were already there: one for IsWindow(), another for getting rectangle below. I thought it might be better not to introduce the third one. Should I use GetWindowLong() regardless?
Yes. If you want to improve it, you can avoid IsWindow() and check for GetWindowRect() failure or something like that. But either way I don't expect GetWindowPlacement() to be timing-critical. -- Alexandre Julliard julliard(a)winehq.org