2002-07-04 David Welch <welch@computer2.darkstar.org>
[reactos.git] / reactos / lib / user32 / misc / desktop.c
1 /* $Id: desktop.c,v 1.3 2002/07/04 19:56:34 dwelch Exp $
2 *
3 * COPYRIGHT: See COPYING in the top level directory
4 * PROJECT: ReactOS user32.dll
5 * FILE: lib/user32/misc/desktop.c
6 * PURPOSE: Desktops
7 * PROGRAMMER: Casper S. Hornstrup (chorns@users.sourceforge.net)
8 * UPDATE HISTORY:
9 * 06-06-2001 CSH Created
10 */
11 #include <windows.h>
12 #include <user32.h>
13 #include <debug.h>
14
15
16 WINBOOL
17 STDCALL
18 CloseDesktop(
19 HDESK hDesktop)
20 {
21 return NtUserCloseDesktop(hDesktop);
22 }
23
24 HDESK STDCALL
25 CreateDesktopA(LPCSTR lpszDesktop,
26 LPCSTR lpszDevice,
27 LPDEVMODEA pDevmode,
28 DWORD dwFlags,
29 ACCESS_MASK dwDesiredAccess,
30 LPSECURITY_ATTRIBUTES lpsa)
31 {
32 ANSI_STRING DesktopNameA;
33 UNICODE_STRING DesktopNameU;
34 HDESK hDesktop;
35
36 if (lpszDesktop != NULL)
37 {
38 RtlInitAnsiString(&DesktopNameA, (LPSTR)lpszDesktop);
39 RtlAnsiStringToUnicodeString(&DesktopNameU, &DesktopNameA, TRUE);
40 }
41 else
42 {
43 RtlInitUnicodeString(&DesktopNameU, NULL);
44 }
45 /* FIXME: Need to convert the DEVMODE parameter. */
46
47 hDesktop = CreateDesktopW(DesktopNameU.Buffer,
48 NULL,
49 pDevmode,
50 dwFlags,
51 dwDesiredAccess,
52 lpsa);
53
54 RtlFreeUnicodeString(&DesktopNameU);
55 return(hDesktop);
56 }
57
58 HDESK STDCALL
59 CreateDesktopW(LPCWSTR lpszDesktop,
60 LPCWSTR lpszDevice,
61 LPDEVMODEW pDevmode,
62 DWORD dwFlags,
63 ACCESS_MASK dwDesiredAccess,
64 LPSECURITY_ATTRIBUTES lpsa)
65 {
66 UNICODE_STRING DesktopName;
67 HWINSTA hWinSta;
68 HDESK hDesktop;
69
70 hWinSta = NtUserGetProcessWindowStation();
71
72 RtlInitUnicodeString(&DesktopName, lpszDesktop);
73
74 hDesktop = NtUserCreateDesktop(&DesktopName,
75 dwFlags,
76 dwDesiredAccess,
77 lpsa,
78 hWinSta);
79
80 return(hDesktop);
81 }
82
83 WINBOOL
84 STDCALL
85 EnumDesktopWindows(
86 HDESK hDesktop,
87 ENUMWINDOWSPROC lpfn,
88 LPARAM lParam)
89 {
90 return FALSE;
91 }
92
93 WINBOOL
94 STDCALL
95 EnumDesktopsA(
96 HWINSTA hwinsta,
97 DESKTOPENUMPROC lpEnumFunc,
98 LPARAM lParam)
99 {
100 return FALSE;
101 }
102
103 WINBOOL
104 STDCALL
105 EnumDesktopsW(
106 HWINSTA hwinsta,
107 DESKTOPENUMPROC lpEnumFunc,
108 LPARAM lParam)
109 {
110 return FALSE;
111 }
112
113 HDESK
114 STDCALL
115 GetThreadDesktop(
116 DWORD dwThreadId)
117 {
118 return NtUserGetThreadDesktop(dwThreadId, 0);
119 }
120
121 HDESK
122 STDCALL
123 OpenDesktopA(
124 LPSTR lpszDesktop,
125 DWORD dwFlags,
126 WINBOOL fInherit,
127 ACCESS_MASK dwDesiredAccess)
128 {
129 ANSI_STRING DesktopNameA;
130 UNICODE_STRING DesktopNameU;
131 HDESK hDesktop;
132
133 if (lpszDesktop != NULL) {
134 RtlInitAnsiString(&DesktopNameA, lpszDesktop);
135 RtlAnsiStringToUnicodeString(&DesktopNameU, &DesktopNameA, TRUE);
136 } else {
137 RtlInitUnicodeString(&DesktopNameU, NULL);
138 }
139
140 hDesktop = OpenDesktopW(
141 DesktopNameU.Buffer,
142 dwFlags,
143 fInherit,
144 dwDesiredAccess);
145
146 RtlFreeUnicodeString(&DesktopNameU);
147
148 return hDesktop;
149 }
150
151 HDESK
152 STDCALL
153 OpenDesktopW(
154 LPWSTR lpszDesktop,
155 DWORD dwFlags,
156 WINBOOL fInherit,
157 ACCESS_MASK dwDesiredAccess)
158 {
159 UNICODE_STRING DesktopName;
160
161 RtlInitUnicodeString(&DesktopName, lpszDesktop);
162
163 return NtUserOpenDesktop(
164 &DesktopName,
165 dwFlags,
166 dwDesiredAccess);
167 }
168
169 HDESK
170 STDCALL
171 OpenInputDesktop(
172 DWORD dwFlags,
173 WINBOOL fInherit,
174 ACCESS_MASK dwDesiredAccess)
175 {
176 return NtUserOpenInputDesktop(
177 dwFlags,
178 fInherit,
179 dwDesiredAccess);
180 }
181
182 WINBOOL
183 STDCALL
184 PaintDesktop(
185 HDC hdc)
186 {
187 return NtUserPaintDesktop(hdc);
188 }
189
190 WINBOOL
191 STDCALL
192 SetThreadDesktop(
193 HDESK hDesktop)
194 {
195 return NtUserSetThreadDesktop(hDesktop);
196 }
197
198 WINBOOL
199 STDCALL
200 SwitchDesktop(
201 HDESK hDesktop)
202 {
203 return NtUserSwitchDesktop(hDesktop);
204 }
205
206 /* EOF */