mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 05:52:56 +00:00
DefWindowProcA/W:
- Fix WM_GETTEXTLENGHT message - Add WM_IME_NOTIFY message - Implement WM_IME_KEYDOWN, WM_IME_KEYUP, WM_IME_SETCONTEXT, WM_IME_CHAR, WM_IME_STARTCOMPOSITION, WM_IME_COMPOSITION, WM_IME_ENDCOMPOSITION, WM_IME_SELECT, WM_IME_NOTIFY - Remove CascadeWindows and TileWindows from window.c (it is already declared in mdi.c) - Implement TileChildWindows, CascadeChildWindows, GetInternalWindowPos, SetSysColorsTemp - Add checking params for GetProcessDefaultLayout, SetProcessDefaultLayout, GetMouseMovePointsEx, GetRawInputDeviceList - LockSetForegroundWindow return TRUE - GetRawInputBuffer, GetRawInputDeviceInfoA/W, DefRawInputProc, GetRawInputData, GetRegisteredRawInputDevices return 0 Based on Wine implementation svn path=/trunk/; revision=36933
This commit is contained in:
parent
8a90945651
commit
1e2dcd06e8
3 changed files with 318 additions and 107 deletions
|
@ -42,8 +42,22 @@ GetMouseMovePointsEx(
|
||||||
int nBufPoints,
|
int nBufPoints,
|
||||||
DWORD resolution)
|
DWORD resolution)
|
||||||
{
|
{
|
||||||
|
if((cbSize != sizeof(MOUSEMOVEPOINT)) || (nBufPoints < 0) || (nBufPoints > 64))
|
||||||
|
{
|
||||||
|
SetLastError(ERROR_INVALID_PARAMETER);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!lppt || !lpptBuf)
|
||||||
|
{
|
||||||
|
SetLastError(ERROR_NOACCESS);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
return 0;
|
|
||||||
|
SetLastError(ERROR_POINT_NOT_FOUND);
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -137,8 +151,15 @@ GetInternalWindowPos(
|
||||||
LPPOINT ptIcon
|
LPPOINT ptIcon
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
WINDOWPLACEMENT wndpl;
|
||||||
return FALSE;
|
|
||||||
|
if (GetWindowPlacement(hwnd, &wndpl))
|
||||||
|
{
|
||||||
|
if (rectWnd) *rectWnd = wndpl.rcNormalPosition;
|
||||||
|
if (ptIcon) *ptIcon = wndpl.ptMinPosition;
|
||||||
|
return wndpl.showCmd;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -226,40 +247,90 @@ UserRealizePalette ( HDC hDC )
|
||||||
return NtUserCallOneParam((DWORD) hDC, ONEPARAM_ROUTINE_REALIZEPALETTE);
|
return NtUserCallOneParam((DWORD) hDC, ONEPARAM_ROUTINE_REALIZEPALETTE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* @unimplemented
|
/*************************************************************************
|
||||||
|
* SetSysColorsTemp (USER32.@) (Wine 10/22/2008)
|
||||||
|
*
|
||||||
|
* UNDOCUMENTED !!
|
||||||
|
*
|
||||||
|
* Called by W98SE desk.cpl Control Panel Applet:
|
||||||
|
* handle = SetSysColorsTemp(ptr, ptr, nCount); ("set" call)
|
||||||
|
* result = SetSysColorsTemp(NULL, NULL, handle); ("restore" call)
|
||||||
|
*
|
||||||
|
* pPens is an array of COLORREF values, which seems to be used
|
||||||
|
* to indicate the color values to create new pens with.
|
||||||
|
*
|
||||||
|
* pBrushes is an array of solid brush handles (returned by a previous
|
||||||
|
* CreateSolidBrush), which seems to contain the brush handles to set
|
||||||
|
* for the system colors.
|
||||||
|
*
|
||||||
|
* n seems to be used for
|
||||||
|
* a) indicating the number of entries to operate on (length of pPens,
|
||||||
|
* pBrushes)
|
||||||
|
* b) passing the handle that points to the previously used color settings.
|
||||||
|
* I couldn't figure out in hell what kind of handle this is on
|
||||||
|
* Windows. I just use a heap handle instead. Shouldn't matter anyway.
|
||||||
|
*
|
||||||
|
* RETURNS
|
||||||
|
* heap handle of our own copy of the current syscolors in case of
|
||||||
|
* "set" call, i.e. pPens, pBrushes != NULL.
|
||||||
|
* TRUE (unconditionally !) in case of "restore" call,
|
||||||
|
* i.e. pPens, pBrushes == NULL.
|
||||||
|
* FALSE in case of either pPens != NULL and pBrushes == NULL
|
||||||
|
* or pPens == NULL and pBrushes != NULL.
|
||||||
|
*
|
||||||
|
* I'm not sure whether this implementation is 100% correct. [AM]
|
||||||
*/
|
*/
|
||||||
HANDLE
|
|
||||||
|
static HPEN SysColorPens[COLOR_MENUBAR + 1];
|
||||||
|
static HBRUSH SysColorBrushes[COLOR_MENUBAR + 1];
|
||||||
|
|
||||||
|
DWORD
|
||||||
WINAPI
|
WINAPI
|
||||||
SetSysColorsTemp(
|
SetSysColorsTemp(const COLORREF *pPens,
|
||||||
const COLORREF *pPens,
|
|
||||||
const HBRUSH *pBrushes,
|
const HBRUSH *pBrushes,
|
||||||
INT n
|
DWORD n)
|
||||||
)
|
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
DWORD i;
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
if (pPens && pBrushes) /* "set" call */
|
||||||
* @unimplemented
|
{
|
||||||
*/
|
/* allocate our structure to remember old colors */
|
||||||
WORD
|
LPVOID pOldCol = HeapAlloc(GetProcessHeap(), 0, sizeof(DWORD)+n*sizeof(HPEN)+n*sizeof(HBRUSH));
|
||||||
STDCALL
|
LPVOID p = pOldCol;
|
||||||
CascadeChildWindows ( HWND hWndParent, WORD wFlags )
|
*(DWORD *)p = n; p = (char*)p + sizeof(DWORD);
|
||||||
{
|
memcpy(p, SysColorPens, n*sizeof(HPEN)); p = (char*)p + n*sizeof(HPEN);
|
||||||
UNIMPLEMENTED;
|
memcpy(p, SysColorBrushes, n*sizeof(HBRUSH)); p = (char*)p + n*sizeof(HBRUSH);
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
for (i=0; i < n; i++)
|
||||||
* @unimplemented
|
{
|
||||||
*/
|
SysColorPens[i] = CreatePen( PS_SOLID, 1, pPens[i] );
|
||||||
WORD
|
SysColorBrushes[i] = pBrushes[i];
|
||||||
STDCALL
|
}
|
||||||
TileChildWindows ( HWND hWndParent, WORD wFlags )
|
|
||||||
{
|
return (DWORD) pOldCol; /* FIXME: pointer truncation */
|
||||||
UNIMPLEMENTED;
|
}
|
||||||
|
if (!pPens && !pBrushes) /* "restore" call */
|
||||||
|
{
|
||||||
|
LPVOID pOldCol = (LPVOID)n; /* FIXME: not 64-bit safe */
|
||||||
|
LPVOID p = pOldCol;
|
||||||
|
DWORD nCount = *(DWORD *)p;
|
||||||
|
p = (char*)p + sizeof(DWORD);
|
||||||
|
|
||||||
|
for (i=0; i < nCount; i++)
|
||||||
|
{
|
||||||
|
DeleteObject(SysColorPens[i]);
|
||||||
|
SysColorPens[i] = *(HPEN *)p; p = (char*)p + sizeof(HPEN);
|
||||||
|
}
|
||||||
|
for (i=0; i < nCount; i++)
|
||||||
|
{
|
||||||
|
SysColorBrushes[i] = *(HBRUSH *)p; p = (char*)p + sizeof(HBRUSH);
|
||||||
|
}
|
||||||
|
/* get rid of storage structure */
|
||||||
|
HeapFree(GetProcessHeap(), 0, pOldCol);
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -308,7 +379,7 @@ GetRawInputDeviceInfoW(
|
||||||
PUINT pcbSize)
|
PUINT pcbSize)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
return FALSE;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -340,7 +411,7 @@ GetRawInputDeviceInfoA(
|
||||||
PUINT pcbSize)
|
PUINT pcbSize)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
return FALSE;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -365,7 +436,7 @@ DefRawInputProc(
|
||||||
UINT cbSizeHeader)
|
UINT cbSizeHeader)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
return FALSE;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -379,7 +450,7 @@ GetRawInputBuffer(
|
||||||
UINT cbSizeHeader)
|
UINT cbSizeHeader)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
return FALSE;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -395,7 +466,7 @@ GetRawInputData(
|
||||||
UINT cbSizeHeader)
|
UINT cbSizeHeader)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
return FALSE;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -408,8 +479,12 @@ GetRawInputDeviceList(
|
||||||
PUINT puiNumDevices,
|
PUINT puiNumDevices,
|
||||||
UINT cbSize)
|
UINT cbSize)
|
||||||
{
|
{
|
||||||
|
if(pRawInputDeviceList)
|
||||||
|
memset(pRawInputDeviceList, 0, sizeof *pRawInputDeviceList);
|
||||||
|
*puiNumDevices = 0;
|
||||||
|
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
return FALSE;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -423,7 +498,7 @@ GetRegisteredRawInputDevices(
|
||||||
UINT cbSize)
|
UINT cbSize)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
return FALSE;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -1194,6 +1194,7 @@ User32DefWindowProc(HWND hWnd,
|
||||||
if (hDC)
|
if (hDC)
|
||||||
{
|
{
|
||||||
HICON hIcon;
|
HICON hIcon;
|
||||||
|
|
||||||
if (GetWindowLongW(hWnd, GWL_STYLE) & WS_MINIMIZE &&
|
if (GetWindowLongW(hWnd, GWL_STYLE) & WS_MINIMIZE &&
|
||||||
(hIcon = (HICON)GetClassLongW(hWnd, GCL_HICON)) != NULL)
|
(hIcon = (HICON)GetClassLongW(hWnd, GCL_HICON)) != NULL)
|
||||||
{
|
{
|
||||||
|
@ -1762,6 +1763,75 @@ User32DefWindowProc(HWND hWnd,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* helpers for calling IMM32 (from Wine 10/22/2008)
|
||||||
|
*
|
||||||
|
* WM_IME_* messages are generated only by IMM32,
|
||||||
|
* so I assume imm32 is already LoadLibrary-ed.
|
||||||
|
*/
|
||||||
|
static HWND
|
||||||
|
DefWndImmGetDefaultIMEWnd(HWND hwnd)
|
||||||
|
{
|
||||||
|
HINSTANCE hInstIMM = GetModuleHandleW(L"imm32\0");
|
||||||
|
HWND (WINAPI *pFunc)(HWND);
|
||||||
|
HWND hwndRet = 0;
|
||||||
|
|
||||||
|
if (!hInstIMM)
|
||||||
|
{
|
||||||
|
ERR("cannot get IMM32 handle\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
pFunc = (void*) GetProcAddress(hInstIMM, "ImmGetDefaultIMEWnd");
|
||||||
|
if (pFunc != NULL)
|
||||||
|
hwndRet = (*pFunc)(hwnd);
|
||||||
|
|
||||||
|
return hwndRet;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static BOOL
|
||||||
|
DefWndImmIsUIMessageA(HWND hwndIME, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||||
|
{
|
||||||
|
HINSTANCE hInstIMM = GetModuleHandleW(L"imm32\0");
|
||||||
|
BOOL (WINAPI *pFunc)(HWND,UINT,WPARAM,LPARAM);
|
||||||
|
BOOL fRet = FALSE;
|
||||||
|
|
||||||
|
if (!hInstIMM)
|
||||||
|
{
|
||||||
|
ERR("cannot get IMM32 handle\n");
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
pFunc = (void*) GetProcAddress(hInstIMM, "ImmIsUIMessageA");
|
||||||
|
if (pFunc != NULL)
|
||||||
|
fRet = (*pFunc)(hwndIME, msg, wParam, lParam);
|
||||||
|
|
||||||
|
return fRet;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static BOOL
|
||||||
|
DefWndImmIsUIMessageW(HWND hwndIME, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||||
|
{
|
||||||
|
HINSTANCE hInstIMM = GetModuleHandleW(L"imm32\0");
|
||||||
|
BOOL (WINAPI *pFunc)(HWND,UINT,WPARAM,LPARAM);
|
||||||
|
BOOL fRet = FALSE;
|
||||||
|
|
||||||
|
if (!hInstIMM)
|
||||||
|
{
|
||||||
|
ERR("cannot get IMM32 handle\n");
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
pFunc = (void*) GetProcAddress(hInstIMM, "ImmIsUIMessageW");
|
||||||
|
if (pFunc != NULL)
|
||||||
|
fRet = (*pFunc)(hwndIME, msg, wParam, lParam);
|
||||||
|
|
||||||
|
return fRet;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
LRESULT STDCALL
|
LRESULT STDCALL
|
||||||
DefWindowProcA(HWND hWnd,
|
DefWindowProcA(HWND hWnd,
|
||||||
UINT Msg,
|
UINT Msg,
|
||||||
|
@ -1810,9 +1880,11 @@ DefWindowProcA(HWND hWnd,
|
||||||
buf,
|
buf,
|
||||||
Wnd->WindowName.Length)))
|
Wnd->WindowName.Length)))
|
||||||
{
|
{
|
||||||
Result = (LRESULT)len;
|
Result = (LRESULT) len;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else Result = 0L;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1876,16 +1948,50 @@ DefWindowProcA(HWND hWnd,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* FIXME: Implement these. */
|
|
||||||
case WM_IME_CHAR:
|
|
||||||
case WM_IME_KEYDOWN:
|
case WM_IME_KEYDOWN:
|
||||||
|
{
|
||||||
|
Result = PostMessageA(hWnd, WM_KEYDOWN, wParam, lParam);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case WM_IME_KEYUP:
|
case WM_IME_KEYUP:
|
||||||
|
{
|
||||||
|
Result = PostMessageA(hWnd, WM_KEYUP, wParam, lParam);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case WM_IME_CHAR:
|
||||||
|
{
|
||||||
|
if (HIBYTE(wParam))
|
||||||
|
PostMessageA(hWnd, WM_CHAR, HIBYTE(wParam), lParam);
|
||||||
|
PostMessageA(hWnd, WM_CHAR, LOBYTE(wParam), lParam);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case WM_IME_STARTCOMPOSITION:
|
case WM_IME_STARTCOMPOSITION:
|
||||||
case WM_IME_COMPOSITION:
|
case WM_IME_COMPOSITION:
|
||||||
case WM_IME_ENDCOMPOSITION:
|
case WM_IME_ENDCOMPOSITION:
|
||||||
case WM_IME_SELECT:
|
case WM_IME_SELECT:
|
||||||
|
case WM_IME_NOTIFY:
|
||||||
|
{
|
||||||
|
HWND hwndIME;
|
||||||
|
|
||||||
|
hwndIME = DefWndImmGetDefaultIMEWnd(hWnd);
|
||||||
|
if (hwndIME)
|
||||||
|
Result = SendMessageA(hwndIME, Msg, wParam, lParam);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case WM_IME_SETCONTEXT:
|
case WM_IME_SETCONTEXT:
|
||||||
FIXME("FIXME: WM_IME_* conversion isn't implemented yet!");
|
{
|
||||||
|
HWND hwndIME;
|
||||||
|
|
||||||
|
hwndIME = DefWndImmGetDefaultIMEWnd(hWnd);
|
||||||
|
if (hwndIME)
|
||||||
|
Result = DefWndImmIsUIMessageA(hwndIME, Msg, wParam, lParam);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
/* fall through */
|
/* fall through */
|
||||||
default:
|
default:
|
||||||
Result = User32DefWindowProc(hWnd, Msg, wParam, lParam, FALSE);
|
Result = User32DefWindowProc(hWnd, Msg, wParam, lParam, FALSE);
|
||||||
|
@ -1918,7 +2024,7 @@ DefWindowProcW(HWND hWnd,
|
||||||
if(cs->lpszName)
|
if(cs->lpszName)
|
||||||
RtlInitUnicodeString(&UnicodeString, (LPWSTR)cs->lpszName);
|
RtlInitUnicodeString(&UnicodeString, (LPWSTR)cs->lpszName);
|
||||||
|
|
||||||
NtUserDefSetText( hWnd, (cs->lpszName ? &UnicodeString : NULL));
|
NtUserDefSetText(hWnd, (cs->lpszName ? &UnicodeString : NULL));
|
||||||
Result = 1;
|
Result = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1937,9 +2043,11 @@ DefWindowProcW(HWND hWnd,
|
||||||
buf,
|
buf,
|
||||||
Wnd->WindowName.Length)))
|
Wnd->WindowName.Length)))
|
||||||
{
|
{
|
||||||
Result = (LRESULT)len;
|
Result = (LRESULT) (Wnd->WindowName.Length / sizeof(WCHAR));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else Result = 0L;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1992,16 +2100,44 @@ DefWindowProcW(HWND hWnd,
|
||||||
|
|
||||||
case WM_IME_CHAR:
|
case WM_IME_CHAR:
|
||||||
{
|
{
|
||||||
SendMessageW(hWnd, WM_CHAR, wParam, lParam);
|
PostMessageW(hWnd, WM_CHAR, wParam, lParam);
|
||||||
Result = 0;
|
Result = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case WM_IME_KEYDOWN:
|
||||||
|
{
|
||||||
|
Result = PostMessageW(hWnd, WM_KEYDOWN, wParam, lParam);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case WM_IME_KEYUP:
|
||||||
|
{
|
||||||
|
Result = PostMessageW(hWnd, WM_KEYUP, wParam, lParam);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case WM_IME_STARTCOMPOSITION:
|
||||||
|
case WM_IME_COMPOSITION:
|
||||||
|
case WM_IME_ENDCOMPOSITION:
|
||||||
|
case WM_IME_SELECT:
|
||||||
|
case WM_IME_NOTIFY:
|
||||||
|
{
|
||||||
|
HWND hwndIME;
|
||||||
|
|
||||||
|
hwndIME = DefWndImmGetDefaultIMEWnd(hWnd);
|
||||||
|
if (hwndIME)
|
||||||
|
Result = SendMessageW(hwndIME, Msg, wParam, lParam);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case WM_IME_SETCONTEXT:
|
case WM_IME_SETCONTEXT:
|
||||||
{
|
{
|
||||||
/* FIXME */
|
HWND hwndIME;
|
||||||
FIXME("FIXME: WM_IME_SETCONTEXT is not implemented!");
|
|
||||||
Result = 0;
|
hwndIME = DefWndImmGetDefaultIMEWnd(hWnd);
|
||||||
|
if (hwndIME)
|
||||||
|
Result = DefWndImmIsUIMessageW(hwndIME, Msg, wParam, lParam);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -96,28 +96,24 @@ BringWindowToTop(HWND hWnd)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* @unimplemented
|
|
||||||
*/
|
|
||||||
/*
|
|
||||||
WORD STDCALL
|
|
||||||
CascadeWindows(HWND hwndParent,
|
|
||||||
UINT wHow,
|
|
||||||
CONST RECT *lpRect,
|
|
||||||
UINT cKids,
|
|
||||||
const HWND *lpKids)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
VOID STDCALL
|
VOID STDCALL
|
||||||
SwitchToThisWindow(HWND hwnd, BOOL fUnknown)
|
SwitchToThisWindow(HWND hwnd, BOOL fUnknown)
|
||||||
{
|
{
|
||||||
ShowWindow(hwnd, SW_SHOW);
|
ShowWindow(hwnd, SW_SHOW);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @implemented
|
||||||
|
*/
|
||||||
|
WORD
|
||||||
|
STDCALL
|
||||||
|
CascadeChildWindows ( HWND hWndParent, WORD wFlags )
|
||||||
|
{
|
||||||
|
return CascadeWindows(hWndParent, wFlags, NULL, 0, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
|
@ -1003,8 +999,16 @@ GetParent(HWND hWnd)
|
||||||
BOOL STDCALL
|
BOOL STDCALL
|
||||||
GetProcessDefaultLayout(DWORD *pdwDefaultLayout)
|
GetProcessDefaultLayout(DWORD *pdwDefaultLayout)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
if (!pdwDefaultLayout)
|
||||||
|
{
|
||||||
|
SetLastError(ERROR_INVALID_PARAMETER);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
|
||||||
|
*pdwDefaultLayout = 0;
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1502,7 +1506,7 @@ BOOL STDCALL
|
||||||
LockSetForegroundWindow(UINT uLockCode)
|
LockSetForegroundWindow(UINT uLockCode)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
return FALSE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1602,6 +1606,9 @@ SetParent(HWND hWndChild,
|
||||||
BOOL STDCALL
|
BOOL STDCALL
|
||||||
SetProcessDefaultLayout(DWORD dwDefaultLayout)
|
SetProcessDefaultLayout(DWORD dwDefaultLayout)
|
||||||
{
|
{
|
||||||
|
if (dwDefaultLayout == 0)
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
@ -1741,23 +1748,6 @@ ShowWindowAsync(HWND hWnd,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* @unimplemented
|
|
||||||
*/
|
|
||||||
/*
|
|
||||||
WORD STDCALL
|
|
||||||
TileWindows(HWND hwndParent,
|
|
||||||
UINT wHow,
|
|
||||||
CONST RECT *lpRect,
|
|
||||||
UINT cKids,
|
|
||||||
const HWND *lpKids)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @unimplemented
|
* @unimplemented
|
||||||
*/
|
*/
|
||||||
|
@ -2000,6 +1990,16 @@ ScrollWindowEx(HWND hWnd,
|
||||||
flags);
|
flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @implemented
|
||||||
|
*/
|
||||||
|
WORD
|
||||||
|
STDCALL
|
||||||
|
TileChildWindows(HWND hWndParent, WORD wFlags)
|
||||||
|
{
|
||||||
|
return TileWindows(hWndParent, wFlags, NULL, 0, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue