3 * COPYRIGHT: See COPYING in the top level directory
4 * PROJECT: ReactOS user32.dll
5 * FILE: lib/user32/misc/desktop.c
7 * PROGRAMMER: Casper S. Hornstrup (chorns@users.sourceforge.net)
9 * 06-06-2001 CSH Created
15 #include <rosrtl/devmode.h>
16 #include <rosrtl/logfont.h>
22 GetSystemMetrics(int nIndex)
24 return(NtUserGetSystemMetrics(nIndex));
31 WINBOOL STDCALL SetDeskWallpaper(LPCSTR filename)
33 return SystemParametersInfoA(SPI_SETDESKWALLPAPER,0,(PVOID)filename,1);
39 SystemParametersInfoA(UINT uiAction,
48 return SystemParametersInfoW(uiAction, uiParam, pvParam, fWinIni);
50 case SPI_GETNONCLIENTMETRICS:
52 LPNONCLIENTMETRICSA nclma = (LPNONCLIENTMETRICSA)pvParam;
53 NONCLIENTMETRICSW nclmw;
54 nclmw.cbSize = sizeof(NONCLIENTMETRICSW);
56 if (!SystemParametersInfoW(uiAction, sizeof(NONCLIENTMETRICSW),
60 nclma->iBorderWidth = nclmw.iBorderWidth;
61 nclma->iScrollWidth = nclmw.iScrollWidth;
62 nclma->iScrollHeight = nclmw.iScrollHeight;
63 nclma->iCaptionWidth = nclmw.iCaptionWidth;
64 nclma->iCaptionHeight = nclmw.iCaptionHeight;
65 nclma->iSmCaptionWidth = nclmw.iSmCaptionWidth;
66 nclma->iSmCaptionHeight = nclmw.iSmCaptionHeight;
67 nclma->iMenuWidth = nclmw.iMenuWidth;
68 nclma->iMenuHeight = nclmw.iMenuHeight;
69 RosRtlLogFontW2A(&(nclma->lfCaptionFont), &(nclmw.lfCaptionFont));
70 RosRtlLogFontW2A(&(nclma->lfSmCaptionFont), &(nclmw.lfSmCaptionFont));
71 RosRtlLogFontW2A(&(nclma->lfMenuFont), &(nclmw.lfMenuFont));
72 RosRtlLogFontW2A(&(nclma->lfStatusFont), &(nclmw.lfStatusFont));
73 RosRtlLogFontW2A(&(nclma->lfMessageFont), &(nclmw.lfMessageFont));
76 case SPI_GETICONTITLELOGFONT:
79 if (!SystemParametersInfoW(uiAction, 0, &lfw, fWinIni))
81 RosRtlLogFontW2A(pvParam, &lfw);
94 SystemParametersInfoW(UINT uiAction,
99 return NtUserSystemParametersInfo(uiAction, uiParam, pvParam, fWinIni);
111 return NtUserCloseDesktop(hDesktop);
119 CreateDesktopA(LPCSTR lpszDesktop,
123 ACCESS_MASK dwDesiredAccess,
124 LPSECURITY_ATTRIBUTES lpsa)
126 ANSI_STRING DesktopNameA;
127 UNICODE_STRING DesktopNameU;
131 if (lpszDesktop != NULL)
133 RtlInitAnsiString(&DesktopNameA, (LPSTR)lpszDesktop);
134 RtlAnsiStringToUnicodeString(&DesktopNameU, &DesktopNameA, TRUE);
138 RtlInitUnicodeString(&DesktopNameU, NULL);
141 RosRtlDevModeA2W ( &DevmodeW, pDevmode );
143 hDesktop = CreateDesktopW(DesktopNameU.Buffer,
150 RtlFreeUnicodeString(&DesktopNameU);
159 CreateDesktopW(LPCWSTR lpszDesktop,
163 ACCESS_MASK dwDesiredAccess,
164 LPSECURITY_ATTRIBUTES lpsa)
166 UNICODE_STRING DesktopName;
170 hWinSta = NtUserGetProcessWindowStation();
172 RtlInitUnicodeString(&DesktopName, lpszDesktop);
174 hDesktop = NtUserCreateDesktop(&DesktopName,
191 DESKTOPENUMPROCA lpEnumFunc,
206 DESKTOPENUMPROCW lpEnumFunc,
222 return NtUserGetThreadDesktop(dwThreadId, 0);
235 ACCESS_MASK dwDesiredAccess)
237 ANSI_STRING DesktopNameA;
238 UNICODE_STRING DesktopNameU;
241 if (lpszDesktop != NULL) {
242 RtlInitAnsiString(&DesktopNameA, lpszDesktop);
243 RtlAnsiStringToUnicodeString(&DesktopNameU, &DesktopNameA, TRUE);
245 RtlInitUnicodeString(&DesktopNameU, NULL);
248 hDesktop = OpenDesktopW(
254 RtlFreeUnicodeString(&DesktopNameU);
269 ACCESS_MASK dwDesiredAccess)
271 UNICODE_STRING DesktopName;
273 RtlInitUnicodeString(&DesktopName, lpszDesktop);
275 return NtUserOpenDesktop(
290 ACCESS_MASK dwDesiredAccess)
292 return NtUserOpenInputDesktop(
307 return NtUserPaintDesktop(hdc);
319 return NtUserSetThreadDesktop(hDesktop);
331 return NtUserSwitchDesktop(hDesktop);
339 SetShellWindowEx(HWND hwndShell, HWND hwndShellListView)
341 return NtUserSetShellWindowEx(hwndShell, hwndShellListView);
349 SetShellWindow(HWND hwndShell)
351 return SetShellWindowEx(hwndShell, hwndShell);
361 return NtUserGetShellWindow();