1 /* $Id: desktop.c,v 1.14 2003/07/19 01:35:27 royce 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
20 GetSystemMetrics(int nIndex
)
22 return(NtUserGetSystemMetrics(nIndex
));
30 SystemParametersInfoA(UINT uiAction
,
35 return(SystemParametersInfoW(uiAction
, uiParam
, pvParam
, fWinIni
));
43 SystemParametersInfoW(UINT uiAction
,
48 NONCLIENTMETRICS
*nclm
;
50 /* FIXME: This should be obtained from the registry */
51 static LOGFONT CaptionFont
=
52 { 12, 0, 0, 0, FW_NORMAL
, FALSE
, FALSE
, FALSE
, OEM_CHARSET
,
53 0, 0, DEFAULT_QUALITY
, FF_MODERN
, L
"Bitstream Vera Sans Bold" };
59 ((PRECT
)pvParam
)->left
= 0;
60 ((PRECT
)pvParam
)->top
= 0;
61 ((PRECT
)pvParam
)->right
= 640;
62 ((PRECT
)pvParam
)->bottom
= 480;
65 case SPI_GETNONCLIENTMETRICS
:
68 memcpy(&nclm
->lfCaptionFont
, &CaptionFont
, sizeof(LOGFONT
));
69 memcpy(&nclm
->lfSmCaptionFont
, &CaptionFont
, sizeof(LOGFONT
));
85 return NtUserCloseDesktop(hDesktop
);
93 CreateDesktopA(LPCSTR lpszDesktop
,
97 ACCESS_MASK dwDesiredAccess
,
98 LPSECURITY_ATTRIBUTES lpsa
)
100 ANSI_STRING DesktopNameA
;
101 UNICODE_STRING DesktopNameU
;
105 if (lpszDesktop
!= NULL
)
107 RtlInitAnsiString(&DesktopNameA
, (LPSTR
)lpszDesktop
);
108 RtlAnsiStringToUnicodeString(&DesktopNameU
, &DesktopNameA
, TRUE
);
112 RtlInitUnicodeString(&DesktopNameU
, NULL
);
115 USER32_DevModeA2W ( &DevmodeW
, pDevmode
);
117 hDesktop
= CreateDesktopW(DesktopNameU
.Buffer
,
124 RtlFreeUnicodeString(&DesktopNameU
);
133 CreateDesktopW(LPCWSTR lpszDesktop
,
137 ACCESS_MASK dwDesiredAccess
,
138 LPSECURITY_ATTRIBUTES lpsa
)
140 UNICODE_STRING DesktopName
;
144 hWinSta
= NtUserGetProcessWindowStation();
146 RtlInitUnicodeString(&DesktopName
, lpszDesktop
);
148 hDesktop
= NtUserCreateDesktop(&DesktopName
,
165 ENUMWINDOWSPROC lpfn
,
180 DESKTOPENUMPROC lpEnumFunc
,
195 DESKTOPENUMPROC lpEnumFunc
,
211 return NtUserGetThreadDesktop(dwThreadId
, 0);
224 ACCESS_MASK dwDesiredAccess
)
226 ANSI_STRING DesktopNameA
;
227 UNICODE_STRING DesktopNameU
;
230 if (lpszDesktop
!= NULL
) {
231 RtlInitAnsiString(&DesktopNameA
, lpszDesktop
);
232 RtlAnsiStringToUnicodeString(&DesktopNameU
, &DesktopNameA
, TRUE
);
234 RtlInitUnicodeString(&DesktopNameU
, NULL
);
237 hDesktop
= OpenDesktopW(
243 RtlFreeUnicodeString(&DesktopNameU
);
258 ACCESS_MASK dwDesiredAccess
)
260 UNICODE_STRING DesktopName
;
262 RtlInitUnicodeString(&DesktopName
, lpszDesktop
);
264 return NtUserOpenDesktop(
279 ACCESS_MASK dwDesiredAccess
)
281 return NtUserOpenInputDesktop(
296 return NtUserPaintDesktop(hdc
);
308 return NtUserSetThreadDesktop(hDesktop
);
320 return NtUserSwitchDesktop(hDesktop
);