winex11: Directly use NtUserCreateWindowEx.

Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Jacek Caban 2022-05-02 16:57:41 +02:00 committed by Alexandre Julliard
parent 21c8ff873b
commit 0dcd1eaae5
2 changed files with 17 additions and 9 deletions

View File

@ -373,6 +373,7 @@ static BOOL grab_clipping_window( const RECT *clip )
#if HAVE_X11_EXTENSIONS_XINPUT2_H
static const WCHAR messageW[] = {'M','e','s','s','a','g','e',0};
struct x11drv_thread_data *data = x11drv_thread_data();
UNICODE_STRING class_name;
Window clip_window;
HWND msg_hwnd = 0;
POINT pos;
@ -383,8 +384,10 @@ static BOOL grab_clipping_window( const RECT *clip )
if (!data) return FALSE;
if (!(clip_window = init_clip_window())) return TRUE;
if (!(msg_hwnd = CreateWindowW( messageW, NULL, 0, 0, 0, 0, 0, HWND_MESSAGE, 0,
GetModuleHandleW(0), NULL )))
RtlInitUnicodeString( &class_name, messageW );
if (!(msg_hwnd = NtUserCreateWindowEx( 0, &class_name, &class_name, NULL, 0, 0, 0, 0, 0,
HWND_MESSAGE, 0, NtCurrentTeb()->Peb->ImageBaseAddress,
NULL, 0, NULL, 0, FALSE )))
return TRUE;
if (keyboard_grabbed)

View File

@ -2004,10 +2004,11 @@ HWND create_foreign_window( Display *display, Window xwin )
unsigned int nchildren;
XWindowAttributes attr;
DWORD style = WS_CLIPCHILDREN;
UNICODE_STRING class_name;
if (!class_registered)
{
UNICODE_STRING class_name, version = { 0 };
UNICODE_STRING version = { 0 };
WNDCLASSEXW class;
memset( &class, 0, sizeof(class) );
@ -2050,8 +2051,10 @@ HWND create_foreign_window( Display *display, Window xwin )
pos.y = attr.y;
}
hwnd = CreateWindowW( classW, NULL, style, pos.x, pos.y, attr.width, attr.height,
parent, 0, 0, NULL );
RtlInitUnicodeString( &class_name, classW );
hwnd = NtUserCreateWindowEx( 0, &class_name, &class_name, NULL, style, pos.x, pos.y,
attr.width, attr.height, parent, 0, NULL, NULL, 0, NULL,
0, FALSE );
if (!(data = alloc_win_data( display, hwnd )))
{
@ -2167,6 +2170,7 @@ NTSTATUS x11drv_systray_dock( void *arg )
XSetWindowAttributes attr;
XVisualInfo visual;
struct x11drv_win_data *data;
UNICODE_STRING class_name;
BOOL layered;
HWND hwnd;
@ -2189,10 +2193,11 @@ NTSTATUS x11drv_systray_dock( void *arg )
*params->layered = layered = (visual.depth == 32);
hwnd = CreateWindowExW( layered ? WS_EX_LAYERED : 0,
icon_classname, NULL, WS_CLIPSIBLINGS | WS_POPUP,
CW_USEDEFAULT, CW_USEDEFAULT, params->cx, params->cy,
NULL, NULL, NULL, params->icon );
RtlInitUnicodeString( &class_name, icon_classname );
hwnd = NtUserCreateWindowEx( layered ? WS_EX_LAYERED : 0, &class_name, &class_name, NULL,
WS_CLIPSIBLINGS | WS_POPUP, CW_USEDEFAULT, CW_USEDEFAULT,
params->cx, params->cy, NULL, 0, NULL, params->icon, 0,
NULL, 0, FALSE );
if (!(data = get_win_data( hwnd ))) return STATUS_UNSUCCESSFUL;
if (layered) set_window_visual( data, &visual, TRUE );