From: Rémi Bernon rbernon@codeweavers.com
--- dlls/user32/message.c | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-)
diff --git a/dlls/user32/message.c b/dlls/user32/message.c index a69993053d7..205d3e01c02 100644 --- a/dlls/user32/message.c +++ b/dlls/user32/message.c @@ -29,6 +29,7 @@
WINE_DEFAULT_DEBUG_CHANNEL(msg);
+#define MAX_ATOM_LEN 255
/* pack a pointer into a 32/64 portable format */ static inline ULONGLONG pack_ptr( const void *ptr ) @@ -988,24 +989,34 @@ DWORD WINAPI WaitForInputIdle( HANDLE process, DWORD timeout ) * RegisterWindowMessageA (USER32.@) * RegisterWindowMessage (USER.118) */ -UINT WINAPI RegisterWindowMessageA( LPCSTR str ) +UINT WINAPI RegisterWindowMessageA( LPCSTR name ) { - UINT ret = GlobalAddAtomA(str); - TRACE("%s, ret=%x\n", str, ret); - return ret; + WCHAR buf[MAX_ATOM_LEN + 1]; + UNICODE_STRING str = {.Buffer = buf, .MaximumLength = sizeof(buf)}; + STRING ansi; + + TRACE( "%s\n", debugstr_a(name) ); + + RtlInitAnsiString( &ansi, name ); + RtlAnsiStringToUnicodeString( &str, &ansi, FALSE ); + return NtUserRegisterWindowMessage( &str ); }
/*********************************************************************** * RegisterWindowMessageW (USER32.@) */ -UINT WINAPI RegisterWindowMessageW( LPCWSTR str ) +UINT WINAPI RegisterWindowMessageW( LPCWSTR name ) { - UINT ret = GlobalAddAtomW(str); - TRACE("%s ret=%x\n", debugstr_w(str), ret); - return ret; + UNICODE_STRING str; + + TRACE( "%s\n", debugstr_w(name) ); + + RtlInitUnicodeString( &str, name ); + return NtUserRegisterWindowMessage( &str ); }
+ typedef struct BroadcastParm { DWORD flags;