ReactOS 0.4.16-dev-338-g34e76ad
misc.c
Go to the documentation of this file.
1/*
2 * ReactOS Management Console
3 * Copyright (C) 2006 - 2007 Thomas Weidenmueller
4 *
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2.1 of the License, or (at your option) any later version.
9 *
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
14 *
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18 */
19
20#include "precomp.h"
21
22INT
24 IN UINT uID)
25{
26 HRSRC hrSrc;
27 HGLOBAL hRes;
28 LPWSTR lpName, lpStr;
29
30 if (hInst == NULL)
31 {
32 return -1;
33 }
34
35 /* There are always blocks of 16 strings */
36 lpName = (LPWSTR)MAKEINTRESOURCE((uID >> 4) + 1);
37
38 /* Find the string table block */
39 if ((hrSrc = FindResourceW(hInst, lpName, (LPWSTR)RT_STRING)) &&
40 (hRes = LoadResource(hInst, hrSrc)) &&
41 (lpStr = LockResource(hRes)))
42 {
43 UINT x;
44
45 /* Find the string we're looking for */
46 uID &= 0xF; /* position in the block, same as % 16 */
47 for (x = 0; x < uID; x++)
48 {
49 lpStr += (*lpStr) + 1;
50 }
51
52 /* Found the string */
53 return (int)(*lpStr);
54 }
55 return -1;
56}
57
58INT
61 IN UINT uID)
62{
63 INT ln;
64
66 uID);
67 if (ln++ > 0)
68 {
69 (*lpTarget) = (LPWSTR)LocalAlloc(LMEM_FIXED,
70 ln * sizeof(TCHAR));
71 if ((*lpTarget) != NULL)
72 {
73 INT Ret;
74 if (!(Ret = LoadString(hInst, uID, *lpTarget, ln)))
75 {
76 LocalFree((HLOCAL)(*lpTarget));
77 }
78 return Ret;
79 }
80 }
81 return 0;
82}
83
86 IN UINT uID,
87 OUT LPTSTR *lpTarget,
88 ...)
89{
90 DWORD Ret = 0;
92 va_list lArgs;
93
96 uID) != 0)
97 {
98 va_start(lArgs, lpTarget);
99 /* let's use FormatMessage to format it because it has the ability to allocate
100 memory automatically */
102 lpFormat,
103 0,
104 0,
105 (LPTSTR)lpTarget,
106 0,
107 &lArgs);
108 va_end(lArgs);
109
111 }
112
113 return Ret;
114}
char * va_list
Definition: acmsvcex.h:78
#define va_end(ap)
Definition: acmsvcex.h:90
#define va_start(ap, A)
Definition: acmsvcex.h:91
INT LengthOfStrResource(IN HINSTANCE hInst, IN UINT uID)
Definition: misc.c:23
INT AllocAndLoadString(OUT LPTSTR *lpTarget, IN HINSTANCE hInst, IN UINT uID)
Definition: misc.c:59
DWORD LoadAndFormatString(IN HINSTANCE hInstance, IN UINT uID, OUT LPTSTR *lpTarget,...)
Definition: misc.c:85
HINSTANCE hInstance
Definition: charmap.c:19
#define NULL
Definition: types.h:112
HRSRC WINAPI FindResourceW(HINSTANCE hModule, LPCWSTR name, LPCWSTR type)
Definition: res.c:176
LPVOID WINAPI LockResource(HGLOBAL handle)
Definition: res.c:550
HGLOBAL WINAPI LoadResource(HINSTANCE hModule, HRSRC hRsrc)
Definition: res.c:532
HINSTANCE hInst
Definition: dxdiag.c:13
unsigned long DWORD
Definition: ntddk_ex.h:95
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
HLOCAL NTAPI LocalAlloc(UINT uFlags, SIZE_T dwBytes)
Definition: heapmem.c:1390
HLOCAL NTAPI LocalFree(HLOCAL hMem)
Definition: heapmem.c:1594
unsigned int UINT
Definition: ndis.h:50
#define RT_STRING
Definition: pedump.c:368
LPCWSTR lpFormat
Definition: trayclock.cpp:32
int32_t INT
Definition: typedefs.h:58
#define IN
Definition: typedefs.h:39
#define OUT
Definition: typedefs.h:40
#define FormatMessage
Definition: winbase.h:3820
#define FORMAT_MESSAGE_FROM_STRING
Definition: winbase.h:447
_In_ LPCSTR lpName
Definition: winbase.h:2814
#define FORMAT_MESSAGE_ALLOCATE_BUFFER
Definition: winbase.h:445
#define LMEM_FIXED
Definition: winbase.h:394
#define LoadString
Definition: winuser.h:5831
#define MAKEINTRESOURCE
Definition: winuser.h:591
char TCHAR
Definition: xmlstorage.h:189
WCHAR * LPWSTR
Definition: xmlstorage.h:184
CHAR * LPTSTR
Definition: xmlstorage.h:192