1 /* $Id: desktop.c,v 1.23 2003/08/11 11:02:43 gvg Exp $
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
));
32 SystemParametersInfoA(UINT uiAction
,
38 NONCLIENTMETRICSA
*nclma
;
39 NONCLIENTMETRICSW nclmw
;
43 case SPI_GETNONCLIENTMETRICS
:
45 nclmw
.cbSize
= sizeof(NONCLIENTMETRICSW
);
46 uiParam
= sizeof(NONCLIENTMETRICSW
);
50 Ret
= SystemParametersInfoW(uiAction
, uiParam
, pvParam
, fWinIni
);
58 case SPI_GETNONCLIENTMETRICS
:
59 RosRtlLogFontW2A(&(nclma
->lfCaptionFont
), &(nclmw
.lfCaptionFont
));
60 RosRtlLogFontW2A(&(nclma
->lfSmCaptionFont
), &(nclmw
.lfSmCaptionFont
));
72 SystemParametersInfoW(UINT uiAction
,
77 NONCLIENTMETRICSW
*nclm
;
79 /* FIXME: This should be obtained from the registry */
80 static LOGFONTW CaptionFont
=
81 { 12, 0, 0, 0, FW_NORMAL
, FALSE
, FALSE
, FALSE
, OEM_CHARSET
,
82 0, 0, DEFAULT_QUALITY
, FF_MODERN
, L
"Bitstream Vera Sans Bold" };
88 ((PRECT
)pvParam
)->left
= 0;
89 ((PRECT
)pvParam
)->top
= 0;
90 ((PRECT
)pvParam
)->right
= 640;
91 ((PRECT
)pvParam
)->bottom
= 480;
94 case SPI_GETNONCLIENTMETRICS
:
97 memcpy(&nclm
->lfCaptionFont
, &CaptionFont
, sizeof(CaptionFont
));
98 memcpy(&nclm
->lfSmCaptionFont
, &CaptionFont
, sizeof(CaptionFont
));
114 return NtUserCloseDesktop(hDesktop
);
122 CreateDesktopA(LPCSTR lpszDesktop
,
126 ACCESS_MASK dwDesiredAccess
,
127 LPSECURITY_ATTRIBUTES lpsa
)
129 ANSI_STRING DesktopNameA
;
130 UNICODE_STRING DesktopNameU
;
134 if (lpszDesktop
!= NULL
)
136 RtlInitAnsiString(&DesktopNameA
, (LPSTR
)lpszDesktop
);
137 RtlAnsiStringToUnicodeString(&DesktopNameU
, &DesktopNameA
, TRUE
);
141 RtlInitUnicodeString(&DesktopNameU
, NULL
);
144 RosRtlDevModeA2W ( &DevmodeW
, pDevmode
);
146 hDesktop
= CreateDesktopW(DesktopNameU
.Buffer
,
153 RtlFreeUnicodeString(&DesktopNameU
);
162 CreateDesktopW(LPCWSTR lpszDesktop
,
166 ACCESS_MASK dwDesiredAccess
,
167 LPSECURITY_ATTRIBUTES lpsa
)
169 UNICODE_STRING DesktopName
;
173 hWinSta
= NtUserGetProcessWindowStation();
175 RtlInitUnicodeString(&DesktopName
, lpszDesktop
);
177 hDesktop
= NtUserCreateDesktop(&DesktopName
,
194 DESKTOPENUMPROC lpEnumFunc
,
209 DESKTOPENUMPROC lpEnumFunc
,
225 return NtUserGetThreadDesktop(dwThreadId
, 0);
238 ACCESS_MASK dwDesiredAccess
)
240 ANSI_STRING DesktopNameA
;
241 UNICODE_STRING DesktopNameU
;
244 if (lpszDesktop
!= NULL
) {
245 RtlInitAnsiString(&DesktopNameA
, lpszDesktop
);
246 RtlAnsiStringToUnicodeString(&DesktopNameU
, &DesktopNameA
, TRUE
);
248 RtlInitUnicodeString(&DesktopNameU
, NULL
);
251 hDesktop
= OpenDesktopW(
257 RtlFreeUnicodeString(&DesktopNameU
);
272 ACCESS_MASK dwDesiredAccess
)
274 UNICODE_STRING DesktopName
;
276 RtlInitUnicodeString(&DesktopName
, lpszDesktop
);
278 return NtUserOpenDesktop(
293 ACCESS_MASK dwDesiredAccess
)
295 return NtUserOpenInputDesktop(
310 return NtUserPaintDesktop(hdc
);
322 return NtUserSetThreadDesktop(hDesktop
);
334 return NtUserSwitchDesktop(hDesktop
);
342 SetShellWindowEx(HWND hwndShell
, HWND hwndShellListView
)
344 return NtUserSetShellWindowEx(hwndShell
, hwndShellListView
);
352 SetShellWindow(HWND hwndShell
)
354 return SetShellWindowEx(hwndShell
, hwndShell
);
364 return NtUserGetShellWindow();