#include <windows.h>
#include <user32.h>
#include <debug.h>
+#include <rosrtl/devmode.h>
+#include <rosrtl/logfont.h>
+/*
+ * @implemented
+ */
int STDCALL
GetSystemMetrics(int nIndex)
{
return(NtUserGetSystemMetrics(nIndex));
}
+
+/*
+ * @unimplemented
+ */
+WINBOOL STDCALL SetDeskWallpaper(LPCSTR filename)
+{
+ return SystemParametersInfoA(SPI_SETDESKWALLPAPER,0,(PVOID)filename,1);
+}
+/*
+ * @implemented
+ */
WINBOOL STDCALL
SystemParametersInfoA(UINT uiAction,
UINT uiParam,
PVOID pvParam,
UINT fWinIni)
{
- return(SystemParametersInfoW(uiAction, uiParam, pvParam, fWinIni));
+ switch (uiAction)
+ {
+ case SPI_GETWORKAREA:
+ {
+ return SystemParametersInfoW(uiAction, uiParam, pvParam, fWinIni);
+ }
+ case SPI_GETNONCLIENTMETRICS:
+ {
+ LPNONCLIENTMETRICSA nclma = (LPNONCLIENTMETRICSA)pvParam;
+ NONCLIENTMETRICSW nclmw;
+ nclmw.cbSize = sizeof(NONCLIENTMETRICSW);
+
+ if (!SystemParametersInfoW(uiAction, sizeof(NONCLIENTMETRICSW),
+ &nclmw, fWinIni))
+ return FALSE;
+
+ nclma->iBorderWidth = nclmw.iBorderWidth;
+ nclma->iScrollWidth = nclmw.iScrollWidth;
+ nclma->iScrollHeight = nclmw.iScrollHeight;
+ nclma->iCaptionWidth = nclmw.iCaptionWidth;
+ nclma->iCaptionHeight = nclmw.iCaptionHeight;
+ nclma->iSmCaptionWidth = nclmw.iSmCaptionWidth;
+ nclma->iSmCaptionHeight = nclmw.iSmCaptionHeight;
+ nclma->iMenuWidth = nclmw.iMenuWidth;
+ nclma->iMenuHeight = nclmw.iMenuHeight;
+ RosRtlLogFontW2A(&(nclma->lfCaptionFont), &(nclmw.lfCaptionFont));
+ RosRtlLogFontW2A(&(nclma->lfSmCaptionFont), &(nclmw.lfSmCaptionFont));
+ RosRtlLogFontW2A(&(nclma->lfMenuFont), &(nclmw.lfMenuFont));
+ RosRtlLogFontW2A(&(nclma->lfStatusFont), &(nclmw.lfStatusFont));
+ RosRtlLogFontW2A(&(nclma->lfMessageFont), &(nclmw.lfMessageFont));
+ return TRUE;
+ }
+ case SPI_GETICONTITLELOGFONT:
+ {
+ LOGFONTW lfw;
+ if (!SystemParametersInfoW(uiAction, 0, &lfw, fWinIni))
+ return FALSE;
+ RosRtlLogFontW2A(pvParam, &lfw);
+ return TRUE;
+ }
+ }
+
+ return FALSE;
}
+
+/*
+ * @implemented
+ */
WINBOOL STDCALL
SystemParametersInfoW(UINT uiAction,
UINT uiParam,
PVOID pvParam,
UINT fWinIni)
{
- NONCLIENTMETRICS *nclm;
-
- /* FIXME: This should be obtained from the registry */
- static LOGFONT CaptionFont =
- { 12, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, OEM_CHARSET,
- 0, 0, DEFAULT_QUALITY, FIXED_PITCH | FF_MODERN, L"Helmet" };
-
- switch (uiAction)
- {
- case SPI_GETWORKAREA:
- {
- ((PRECT)pvParam)->left = 0;
- ((PRECT)pvParam)->top = 0;
- ((PRECT)pvParam)->right = 640;
- ((PRECT)pvParam)->bottom = 480;
- return(TRUE);
- }
- case SPI_GETNONCLIENTMETRICS:
- {
- nclm = pvParam;
- memcpy(&nclm->lfCaptionFont, &CaptionFont, sizeof(LOGFONT));
- memcpy(&nclm->lfSmCaptionFont, &CaptionFont, sizeof(LOGFONT));
- return(TRUE);
- }
- }
- return(FALSE);
+ return NtUserSystemParametersInfo(uiAction, uiParam, pvParam, fWinIni);
}
+/*
+ * @implemented
+ */
WINBOOL
STDCALL
CloseDesktop(
return NtUserCloseDesktop(hDesktop);
}
+
+/*
+ * @implemented
+ */
HDESK STDCALL
CreateDesktopA(LPCSTR lpszDesktop,
LPCSTR lpszDevice,
ANSI_STRING DesktopNameA;
UNICODE_STRING DesktopNameU;
HDESK hDesktop;
+ DEVMODEW DevmodeW;
if (lpszDesktop != NULL)
{
{
RtlInitUnicodeString(&DesktopNameU, NULL);
}
- /* FIXME: Need to convert the DEVMODE parameter. */
-
+
+ RosRtlDevModeA2W ( &DevmodeW, pDevmode );
+
hDesktop = CreateDesktopW(DesktopNameU.Buffer,
NULL,
- (LPDEVMODEW)pDevmode,
+ &DevmodeW,
dwFlags,
dwDesiredAccess,
lpsa);
-
+
RtlFreeUnicodeString(&DesktopNameU);
return(hDesktop);
}
+
+/*
+ * @implemented
+ */
HDESK STDCALL
CreateDesktopW(LPCWSTR lpszDesktop,
LPCWSTR lpszDevice,
return(hDesktop);
}
-WINBOOL
-STDCALL
-EnumDesktopWindows(
- HDESK hDesktop,
- ENUMWINDOWSPROC lpfn,
- LPARAM lParam)
-{
- return FALSE;
-}
+/*
+ * @unimplemented
+ */
WINBOOL
STDCALL
EnumDesktopsA(
HWINSTA hwinsta,
- DESKTOPENUMPROC lpEnumFunc,
+ DESKTOPENUMPROCA lpEnumFunc,
LPARAM lParam)
{
+ UNIMPLEMENTED;
return FALSE;
}
+
+/*
+ * @unimplemented
+ */
WINBOOL
STDCALL
EnumDesktopsW(
HWINSTA hwinsta,
- DESKTOPENUMPROC lpEnumFunc,
+ DESKTOPENUMPROCW lpEnumFunc,
LPARAM lParam)
{
+ UNIMPLEMENTED;
return FALSE;
}
+
+/*
+ * @implemented
+ */
HDESK
STDCALL
GetThreadDesktop(
return NtUserGetThreadDesktop(dwThreadId, 0);
}
+
+/*
+ * @implemented
+ */
HDESK
STDCALL
OpenDesktopA(
return hDesktop;
}
+
+/*
+ * @implemented
+ */
HDESK
STDCALL
OpenDesktopW(
dwDesiredAccess);
}
+
+/*
+ * @implemented
+ */
HDESK
STDCALL
OpenInputDesktop(
dwDesiredAccess);
}
+
+/*
+ * @implemented
+ */
WINBOOL
STDCALL
PaintDesktop(
return NtUserPaintDesktop(hdc);
}
+
+/*
+ * @implemented
+ */
WINBOOL
STDCALL
SetThreadDesktop(
return NtUserSetThreadDesktop(hDesktop);
}
+
+/*
+ * @implemented
+ */
WINBOOL
STDCALL
SwitchDesktop(
return NtUserSwitchDesktop(hDesktop);
}
+
+/*
+ * @implemented
+ */
+BOOL STDCALL
+SetShellWindowEx(HWND hwndShell, HWND hwndShellListView)
+{
+ return NtUserSetShellWindowEx(hwndShell, hwndShellListView);
+}
+
+
+/*
+ * @implemented
+ */
+BOOL STDCALL
+SetShellWindow(HWND hwndShell)
+{
+ return SetShellWindowEx(hwndShell, hwndShell);
+}
+
+
+/*
+ * @implemented
+ */
+HWND STDCALL
+GetShellWindow(VOID)
+{
+ return NtUserGetShellWindow();
+}
+
+
/* EOF */