source: trunk/src/user32/new/loadres.cpp@ 336

Last change on this file since 336 was 336, checked in by sandervl, 26 years ago

Menus are displayed now

File size: 10.3 KB
Line 
1/* $Id: loadres.cpp,v 1.2 1999-07-19 11:50:04 sandervl Exp $ */
2
3/*
4 *
5 * Project Odin Software License can be found in LICENSE.TXT
6 *
7 */
8/*
9 * Win32 resource API functions for OS/2
10 *
11 * Copyright 1998 Sander van Leeuwen
12 *
13 */
14#include <os2win.h>
15#include "user32.h"
16#include "resstring.h"
17
18//NOTE: HINSTANCE 0xFFFFFFFF == hinstance executable
19//******************************************************************************
20//******************************************************************************
21int WIN32API LoadStringA(HINSTANCE hinst, UINT wID, LPSTR lpBuffer, int cchBuffer)
22{
23 dprintf(("LoadString from %X, id %d buffersize %d\n", hinst, wID, cchBuffer));
24 return OS2LoadStringAscii(hinst, wID, lpBuffer, cchBuffer);
25}
26//******************************************************************************
27//******************************************************************************
28int WIN32API LoadStringW(HINSTANCE hinst, UINT wID, LPWSTR lpBuffer, int cchBuffer)
29{
30 dprintf(("LoadStringW %d\n", wID));
31 return OS2LoadStringUnicode(hinst, wID, (WCHAR *)lpBuffer, cchBuffer);
32}
33//******************************************************************************
34//******************************************************************************
35HICON WIN32API LoadIconA(HINSTANCE hinst, LPCSTR lpszIcon)
36{
37 HICON rc;
38
39 if((int)lpszIcon >> 16 != 0) {//convert string name identifier to numeric id
40 dprintf(("LoadIcon %s\n", lpszIcon));
41 lpszIcon = (LPCSTR)ConvertNameId(hinst, (char *)lpszIcon);
42 }
43 else dprintf(("LoadIcon %d\n", (int)lpszIcon));
44
45 rc = O32_LoadIcon(hinst, lpszIcon);
46
47 dprintf(("LoadIcon returned %d\n", rc));
48 return(rc);
49}
50//******************************************************************************
51//******************************************************************************
52HCURSOR WIN32API LoadCursorA(HINSTANCE hinst, LPCSTR lpszCursor)
53{
54 HCURSOR rc;
55
56 if((int)lpszCursor >> 16 != 0) {//convert string name identifier to numeric id
57 dprintf(("LoadCursor %s\n", lpszCursor));
58 lpszCursor = (LPCSTR)ConvertNameId(hinst, (char *)lpszCursor);
59 }
60 else dprintf(("LoadCursor %d\n", (int)lpszCursor));
61
62 rc = O32_LoadCursor(hinst, lpszCursor);
63
64 dprintf(("LoadCursor from %X returned %d\n", hinst, rc));
65 return(rc);
66}
67//******************************************************************************
68//******************************************************************************
69HACCEL WIN32API LoadAcceleratorsA(HINSTANCE hinst, LPCSTR lpszAcc)
70{
71 HACCEL rc;
72
73 if((int)lpszAcc >> 16 != 0) {//convert string name identifier to numeric id
74 dprintf(("lpszAcc %s\n", lpszAcc));
75 lpszAcc = (LPCSTR)ConvertNameId(hinst, (char *)lpszAcc);
76 }
77 else dprintf(("lpszAcc %d\n", (int)lpszAcc));
78
79 rc = O32_LoadAccelerators(hinst, lpszAcc);
80
81 dprintf(("LoadAccelerators returned %d\n", rc));
82 return(rc);
83}
84//******************************************************************************
85//******************************************************************************
86HBITMAP WIN32API LoadBitmapA(HINSTANCE hinst, LPCSTR lpszBitmap)
87{
88 HBITMAP rc;
89
90 if((int)lpszBitmap >> 16 != 0)
91 { //convert string name identifier to numeric id
92 dprintf(("lpszBitmap [%s]\n",
93 lpszBitmap));
94
95 lpszBitmap = (LPCSTR)ConvertNameId(hinst,
96 (char *)lpszBitmap);
97 }
98 else
99 dprintf(("lpszBitmap %08xh\n",
100 (int)lpszBitmap));
101
102 rc = O32_LoadBitmap(hinst, lpszBitmap);
103
104 dprintf(("LoadBitmapA returned %08xh\n",
105 rc));
106
107 return(rc);
108}
109
110//******************************************************************************
111//******************************************************************************
112HACCEL WIN32API LoadAcceleratorsW(HINSTANCE hinst, LPCWSTR lpszAccel)
113{
114 char *astring = NULL;
115 HACCEL rc;
116
117 if((int)lpszAccel >> 16 != 0) {//convert string name identifier to numeric id
118 astring = UnicodeToAsciiString((LPWSTR)lpszAccel);
119
120 dprintf(("lpszAccel %s\n", astring));
121 lpszAccel = (LPWSTR)ConvertNameId(hinst, (char *)astring);
122 }
123 else dprintf(("lpszAccel %d\n", (int)lpszAccel));
124
125 rc = O32_LoadAccelerators(hinst, (char *)lpszAccel);
126 if(astring)
127 FreeAsciiString(astring);
128
129 dprintf(("LoadAcceleratorsW returned %d\n", rc));
130 return(rc);
131}
132//******************************************************************************
133//******************************************************************************
134HBITMAP WIN32API LoadBitmapW(HINSTANCE hinst, LPCWSTR lpszBitmap)
135{
136 char *astring = NULL;
137 HBITMAP rc;
138
139 if((int)lpszBitmap >> 16 != 0) {//convert string name identifier to numeric id
140 astring = UnicodeToAsciiString((LPWSTR)lpszBitmap);
141 dprintf(("lpszBitmap %s\n", astring));
142
143 lpszBitmap = (LPWSTR)ConvertNameId(hinst, (char *)astring);
144 }
145 else dprintf(("lpszBitmap %d\n", (int)lpszBitmap));
146
147 rc = O32_LoadBitmap(hinst, (char *)lpszBitmap);
148 if(astring)
149 FreeAsciiString(astring);
150
151 dprintf(("LoadBitmapW returned %d\n", rc));
152 return(rc);
153}
154//******************************************************************************
155//******************************************************************************
156HCURSOR WIN32API LoadCursorW(HINSTANCE hinst, LPCWSTR lpszCursor)
157{
158 char *astring = NULL;
159 HCURSOR rc;
160
161 if((int)lpszCursor >> 16 != 0) {//convert string name identifier to numeric id
162 astring = UnicodeToAsciiString((LPWSTR)lpszCursor);
163 dprintf(("lpszCursor %s\n", astring));
164 lpszCursor = (LPWSTR)ConvertNameId(hinst, (char *)astring);
165 }
166 else dprintf(("lpszCursor %d\n", (int)lpszCursor));
167
168 rc = O32_LoadCursor(hinst, (char *)lpszCursor);
169 if(astring)
170 FreeAsciiString(astring);
171
172 dprintf(("LoadCursorW returned %d\n", rc));
173 return(rc);
174}
175//******************************************************************************
176//******************************************************************************
177HICON WIN32API LoadIconW(HINSTANCE hinst, LPCWSTR lpszIcon)
178{
179 char *astring = NULL;
180 HICON rc;
181
182 if((int)lpszIcon >> 16 != 0) {//convert string name identifier to numeric id
183 astring = UnicodeToAsciiString((LPWSTR)lpszIcon);
184
185 dprintf(("lpszIcon %s\n", astring));
186 lpszIcon = (LPWSTR)ConvertNameId(hinst, (char *)astring);
187 }
188 else dprintf(("lpszIcon %d\n", (int)lpszIcon));
189
190 rc = O32_LoadIcon(hinst, (char *)lpszIcon);
191 if(astring)
192 FreeAsciiString(astring);
193
194 dprintf(("LoadIconW returned %d\n", rc));
195 return(rc);
196}
197//******************************************************************************
198//******************************************************************************
199HMENU WIN32API LoadMenuA(HINSTANCE hinst, LPCSTR lpszMenu)
200{
201 HMENU rc;
202
203#if 1
204 rc = (HMENU)FindResourceA(hinst, lpszMenu, RT_MENUA);
205#else
206 if((int)lpszMenu >> 16 != 0) {//convert string name identifier to numeric id
207 dprintf(("lpszMenu %s\n", lpszMenu));
208
209 lpszMenu = (LPCSTR)ConvertNameId(hinst, (char *)lpszMenu);
210 }
211 else dprintf(("lpszMenu %d\n", (int)lpszMenu));
212
213 rc = O32_LoadMenu(hinst, lpszMenu);
214#endif
215 dprintf(("LoadMenuA (%X) returned %d\n", hinst, rc));
216 return(rc);
217}
218//******************************************************************************
219//******************************************************************************
220HMENU WIN32API LoadMenuW(HINSTANCE hinst, LPCWSTR lpszMenu)
221{
222 HMENU rc;
223
224#if 1
225 rc = (HMENU)FindResourceW(hinst, lpszMenu, RT_MENUW);
226#else
227 char *astring = NULL;
228 if((int)lpszMenu >> 16 != 0) {//convert string name identifier to numeric id
229 astring = UnicodeToAsciiString((LPWSTR)lpszMenu);
230
231 dprintf(("lpszMenu %s\n", astring));
232 lpszMenu = (LPWSTR)ConvertNameId(hinst, (char *)astring);
233 }
234 else dprintf(("lpszMenu %d\n", (int)lpszMenu));
235
236 rc = O32_LoadMenu(hinst, (char *)lpszMenu);
237 if(astring)
238 FreeAsciiString(astring);
239#endif
240 dprintf(("LoadMenuW (%X) returned %d\n", hinst, rc));
241 return(rc);
242}
243//******************************************************************************
244//******************************************************************************
245HMENU WIN32API LoadMenuIndirectA( const MENUITEMTEMPLATEHEADER * arg1)
246{
247 char *astring = NULL;
248 HMENU rc;
249
250 dprintf(("OS2LoadMenuIndirectA\n"));
251
252 rc = O32_LoadMenuIndirect(arg1);
253 if(astring)
254 FreeAsciiString(astring);
255 return(rc);
256}
257//******************************************************************************
258//Won't work...
259//******************************************************************************
260HMENU WIN32API LoadMenuIndirectW(const MENUITEMTEMPLATEHEADER * arg1)
261{
262 dprintf(("OS2LoadMenuIndirectW, improperly implemented!!\n"));
263
264 return 0;
265// return O32_LoadMenuIndirect(arg1);
266}
267//******************************************************************************
268//TODO: Far from complete, but works for loading resources from exe
269//fuLoad flag ignored
270//******************************************************************************
271HANDLE WIN32API LoadImageA(HINSTANCE hinst, LPCSTR lpszName, UINT uType,
272 int cxDesired, int cyDesired, UINT fuLoad)
273{
274 HANDLE hRet = 0;
275
276 dprintf(("OS2LoadImageA NOT COMPLETE (%d,%d)\n", cxDesired, cyDesired));
277
278 switch(uType) {
279 case IMAGE_BITMAP:
280 hRet = (HANDLE)LoadBitmapA(hinst, lpszName);
281 break;
282 case IMAGE_CURSOR:
283 hRet = (HANDLE)LoadCursorA(hinst, lpszName);
284 break;
285 case IMAGE_ICON:
286 hRet = (HANDLE)LoadIconA(hinst, lpszName);
287 break;
288 }
289 dprintf(("OS2LoadImageA returned %d\n", (int)hRet));
290
291 return(hRet);
292}
293//******************************************************************************
294//******************************************************************************
295HANDLE WIN32API LoadImageW(HINSTANCE hinst, LPCWSTR lpszName, UINT uType,
296 int cxDesired, int cyDesired, UINT fuLoad)
297{
298 HANDLE hRet = 0;
299
300 dprintf(("OS2LoadImageW NOT COMPLETE (%d,%d)\n", cxDesired, cyDesired));
301
302 switch(uType) {
303 case IMAGE_BITMAP:
304 hRet = (HANDLE)LoadBitmapW(hinst, lpszName);
305 break;
306 case IMAGE_CURSOR:
307 hRet = (HANDLE)LoadCursorW(hinst, lpszName);
308 break;
309 case IMAGE_ICON:
310 hRet = (HANDLE)LoadIconW(hinst, lpszName);
311 break;
312 }
313 dprintf(("OS2LoadImageW returned %d\n", (int)hRet));
314
315 return(hRet);
316}
317//******************************************************************************
318//******************************************************************************
Note: See TracBrowser for help on using the repository browser.