mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 06:52:56 +00:00
bug 1486 : patch from w3seek USER32: Convert WM_MDICREATE messages from/to unicode
svn path=/trunk/; revision=21904
This commit is contained in:
parent
c09f0eb9c7
commit
78d1377a7b
1 changed files with 66 additions and 10 deletions
|
@ -471,12 +471,12 @@ ConvertLParamString:
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
xs->cs = *(CREATESTRUCTW *)AnsiMsg->lParam;
|
xs->cs = *(CREATESTRUCTW *)AnsiMsg->lParam;
|
||||||
if (HIWORD(xs->cs.lpszName))
|
if (!IS_INTRESOURCE(xs->cs.lpszName))
|
||||||
{
|
{
|
||||||
RtlCreateUnicodeStringFromAsciiz(&UnicodeBuffer, (LPSTR)xs->cs.lpszName);
|
RtlCreateUnicodeStringFromAsciiz(&UnicodeBuffer, (LPSTR)xs->cs.lpszName);
|
||||||
xs->lpszName = xs->cs.lpszName = UnicodeBuffer.Buffer;
|
xs->lpszName = xs->cs.lpszName = UnicodeBuffer.Buffer;
|
||||||
}
|
}
|
||||||
if (HIWORD(xs->cs.lpszClass))
|
if (!IS_ATOM(xs->cs.lpszClass))
|
||||||
{
|
{
|
||||||
RtlCreateUnicodeStringFromAsciiz(&UnicodeBuffer, (LPSTR)xs->cs.lpszClass);
|
RtlCreateUnicodeStringFromAsciiz(&UnicodeBuffer, (LPSTR)xs->cs.lpszClass);
|
||||||
xs->lpszClass = xs->cs.lpszClass = UnicodeBuffer.Buffer;
|
xs->lpszClass = xs->cs.lpszClass = UnicodeBuffer.Buffer;
|
||||||
|
@ -498,7 +498,7 @@ ConvertLParamString:
|
||||||
|
|
||||||
*cs = *(MDICREATESTRUCTW *)AnsiMsg->lParam;
|
*cs = *(MDICREATESTRUCTW *)AnsiMsg->lParam;
|
||||||
|
|
||||||
if (HIWORD(cs->szClass))
|
if (!IS_ATOM(cs->szClass))
|
||||||
{
|
{
|
||||||
RtlCreateUnicodeStringFromAsciiz(&UnicodeBuffer, (LPSTR)cs->szClass);
|
RtlCreateUnicodeStringFromAsciiz(&UnicodeBuffer, (LPSTR)cs->szClass);
|
||||||
cs->szClass = UnicodeBuffer.Buffer;
|
cs->szClass = UnicodeBuffer.Buffer;
|
||||||
|
@ -607,12 +607,9 @@ FreeLParamString:
|
||||||
{
|
{
|
||||||
UNICODE_STRING UnicodeString;
|
UNICODE_STRING UnicodeString;
|
||||||
MDICREATESTRUCTW *cs = (MDICREATESTRUCTW *)UnicodeMsg->lParam;
|
MDICREATESTRUCTW *cs = (MDICREATESTRUCTW *)UnicodeMsg->lParam;
|
||||||
if (HIWORD(cs->szTitle))
|
RtlInitUnicodeString(&UnicodeString, (PCWSTR)cs->szTitle);
|
||||||
{
|
RtlFreeUnicodeString(&UnicodeString);
|
||||||
RtlInitUnicodeString(&UnicodeString, (PCWSTR)cs->szTitle);
|
if (!IS_ATOM(cs->szClass))
|
||||||
RtlFreeUnicodeString(&UnicodeString);
|
|
||||||
}
|
|
||||||
if (HIWORD(cs->szClass))
|
|
||||||
{
|
{
|
||||||
RtlInitUnicodeString(&UnicodeString, (PCWSTR)cs->szClass);
|
RtlInitUnicodeString(&UnicodeString, (PCWSTR)cs->szClass);
|
||||||
RtlFreeUnicodeString(&UnicodeString);
|
RtlFreeUnicodeString(&UnicodeString);
|
||||||
|
@ -762,7 +759,51 @@ ConvertLParamString:
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
case WM_MDICREATE:
|
||||||
|
{
|
||||||
|
ANSI_STRING AnsiBuffer;
|
||||||
|
UNICODE_STRING UnicodeString;
|
||||||
|
MDICREATESTRUCTA *cs =
|
||||||
|
(MDICREATESTRUCTA *)HeapAlloc(GetProcessHeap(), 0, sizeof(*cs));
|
||||||
|
|
||||||
|
if (!cs)
|
||||||
|
{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
*cs = *(MDICREATESTRUCTA *)UnicodeMsg->lParam;
|
||||||
|
|
||||||
|
if (!IS_ATOM(cs->szClass))
|
||||||
|
{
|
||||||
|
RtlInitUnicodeString(&UnicodeString, (LPCWSTR)cs->szClass);
|
||||||
|
if (! NT_SUCCESS(RtlUnicodeStringToAnsiString(&AnsiBuffer,
|
||||||
|
&UnicodeString,
|
||||||
|
TRUE)))
|
||||||
|
{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
cs->szClass = AnsiBuffer.Buffer;
|
||||||
|
}
|
||||||
|
|
||||||
|
RtlInitUnicodeString(&UnicodeString, (LPCWSTR)cs->szTitle);
|
||||||
|
if (! NT_SUCCESS(RtlUnicodeStringToAnsiString(&AnsiBuffer,
|
||||||
|
&UnicodeString,
|
||||||
|
TRUE)))
|
||||||
|
{
|
||||||
|
if (!IS_ATOM(cs->szClass))
|
||||||
|
{
|
||||||
|
RtlInitAnsiString(&AnsiBuffer, cs->szClass);
|
||||||
|
RtlFreeAnsiString(&AnsiBuffer);
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
cs->szTitle = AnsiBuffer.Buffer;
|
||||||
|
|
||||||
|
AnsiMsg->lParam = (LPARAM)cs;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@ -838,6 +879,21 @@ FreeLParamString:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case WM_MDICREATE:
|
||||||
|
{
|
||||||
|
ANSI_STRING AnsiString;
|
||||||
|
MDICREATESTRUCTA *cs = (MDICREATESTRUCTA *)AnsiMsg->lParam;
|
||||||
|
RtlInitAnsiString(&AnsiString, (PCSTR)cs->szTitle);
|
||||||
|
RtlFreeAnsiString(&AnsiString);
|
||||||
|
if (!IS_ATOM(cs->szClass))
|
||||||
|
{
|
||||||
|
RtlInitAnsiString(&AnsiString, (PCSTR)cs->szClass);
|
||||||
|
RtlFreeAnsiString(&AnsiString);
|
||||||
|
}
|
||||||
|
HeapFree(GetProcessHeap(), 0, cs);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue