ReactOS  0.4.14-dev-317-g96040ec
misc.c
Go to the documentation of this file.
1 /*
2  * PROJECT: ReactOS API Test GUI
3  * LICENSE: GPL - See COPYING in the top level directory
4  * FILE:
5  * PURPOSE: miscallanous functions
6  * COPYRIGHT: Copyright 2005 Thomas Weidenmueller <w3seek@reactos.org>
7  * Copyright 2006 - 2008 Ged Murphy <gedmurphy@gmail.com>
8  *
9  */
10 
11 #include <precomp.h>
12 
13 static INT
15  IN UINT uID)
16 {
17  HRSRC hrSrc;
18  HGLOBAL hRes;
19  LPWSTR lpName, lpStr;
20 
21  if (hInst == NULL)
22  {
23  return -1;
24  }
25 
26  /* There are always blocks of 16 strings */
27  lpName = (LPWSTR)MAKEINTRESOURCEW((uID >> 4) + 1);
28 
29  /* Find the string table block */
30  if ((hrSrc = FindResourceW(hInst, lpName, (LPWSTR)RT_STRING)) &&
31  (hRes = LoadResource(hInst, hrSrc)) &&
32  (lpStr = (WCHAR*) LockResource(hRes)))
33  {
34  UINT x;
35 
36  /* Find the string we're looking for */
37  uID &= 0xF; /* position in the block, same as % 16 */
38  for (x = 0; x < uID; x++)
39  {
40  lpStr += (*lpStr) + 1;
41  }
42 
43  /* Found the string */
44  return (int)(*lpStr);
45  }
46  return -1;
47 }
48 
49 INT
52  IN UINT uID)
53 {
54  INT ln;
55 
57  uID);
58  if (ln++ > 0)
59  {
60  (*lpTarget) = (LPTSTR)LocalAlloc(LMEM_FIXED,
61  ln * sizeof(TCHAR));
62  if ((*lpTarget) != NULL)
63  {
64  INT Ret;
65  if (!(Ret = LoadStringW(hInst, uID, *lpTarget, ln)))
66  {
67  LocalFree((HLOCAL)(*lpTarget));
68  }
69  return Ret;
70  }
71  }
72  return 0;
73 }
74 
75 DWORD
77  IN UINT uID,
78  OUT LPWSTR *lpTarget,
79  ...)
80 {
81  DWORD Ret = 0;
83  va_list lArgs;
84 
86  hInstance,
87  uID) > 0)
88  {
89  va_start(lArgs, lpTarget);
90  /* let's use Format to format it because it has the ability to allocate
91  memory automatically */
93  lpFormat,
94  0,
95  0,
96  (LPTSTR)lpTarget,
97  0,
98  &lArgs);
99  va_end(lArgs);
100 
102  }
103 
104  return Ret;
105 }
106 
107 BOOL
109  IN INT PartId,
111  IN UINT uID,
112  ...)
113 {
114  BOOL Ret = FALSE;
115  LPWSTR lpFormat, lpStr;
116  va_list lArgs;
117 
119  hInstance,
120  uID) > 0)
121  {
122  va_start(lArgs, uID);
123  /* let's use FormatMessage to format it because it has the ability to allocate
124  memory automatically */
126  lpFormat,
127  0,
128  0,
129  (VOID*)&lpStr,
130  0,
131  &lArgs);
132  va_end(lArgs);
133 
134  if (lpStr != NULL)
135  {
137  SB_SETTEXT,
138  (WPARAM)PartId,
139  (LPARAM)lpStr);
140  LocalFree((HLOCAL)lpStr);
141  }
142 
144  }
145 
146  return Ret;
147 }
148 
149 BOOL
151  IN INT PartId,
153  IN UINT uID)
154 {
155  BOOL Ret = FALSE;
156  LPWSTR lpStr;
157 
158  if (AllocAndLoadString(&lpStr,
159  hInstance,
160  uID) > 0)
161  {
163  SB_SETTEXT,
164  (WPARAM)PartId,
165  (LPARAM)lpStr);
166  LocalFree((HLOCAL)lpStr);
167  }
168 
169  return Ret;
170 }
171 
172 
173 INT
175  IN HWND hDlg,
176  IN UINT Res)
177 {
178  INT len = GetWindowTextLengthW(GetDlgItem(hDlg, Res));
179  if(len > 0)
180  {
181  GetDlgItemTextW(hDlg,
182  Res,
183  lpString,
184  len + 1);
185  }
186  else
187  lpString = NULL;
188 
189  return len;
190 }
191 
193 {
194  LPWSTR lpMsgBuf = NULL;
195 
199  NULL,
200  err,
202  (VOID*)&lpMsgBuf,
203  0,
204  NULL );
205 
206  MessageBoxW(NULL, lpMsgBuf, L"Error!", MB_OK | MB_ICONERROR);
207 
208  LocalFree(lpMsgBuf);
209 }
210 
212 {
213  MessageBoxW(NULL, lpMsg, L"Note!", MB_ICONEXCLAMATION|MB_OK);
214 }
215 
216 
217 
219 InitImageList(UINT StartResource,
220  UINT EndResource,
221  UINT Width,
222  UINT Height)
223 {
224  HICON hIcon;
225  HIMAGELIST hImageList;
226  UINT i;
227  INT Ret;
228 
229  /* Create the toolbar icon image list */
230  hImageList = ImageList_Create(Width,
231  Height,
233  EndResource - StartResource,
234  0);
235  if (hImageList == NULL)
236  return NULL;
237 
238  /* Add all icons to the image list */
239  for (i = StartResource; i <= EndResource; i++)
240  {
243  IMAGE_ICON,
244  Width,
245  Height,
247  if (hIcon == NULL)
248  goto fail;
249 
250  Ret = ImageList_AddIcon(hImageList,
251  hIcon);
252  if (Ret == -1)
253  goto fail;
254 
256  }
257 
258  return hImageList;
259 
260 fail:
261  ImageList_Destroy(hImageList);
262  return NULL;
263 }
264 
265 DWORD
267  LPWSTR *lpDstStr)
268 {
269  INT length;
270  INT ret = 0;
271 
272  length = strlen(lpSrcStr) + 1;
273 
274  *lpDstStr = (LPWSTR)HeapAlloc(GetProcessHeap(), 0, length * sizeof(WCHAR));
275  if (*lpDstStr)
276  {
278  0,
279  lpSrcStr,
280  -1,
281  *lpDstStr,
282  length);
283  }
284 
285  return ret;
286 }
287 
288 DWORD
290  LPSTR *lpDstStr)
291 {
292  INT length;
293  INT ret = 0;
294 
295  length = wcslen(lpSrcStr) + 1;
296 
297  *lpDstStr = (LPSTR)HeapAlloc(GetProcessHeap(), 0, length);
298  if (*lpDstStr)
299  {
301  0,
302  lpSrcStr,
303  -1,
304  *lpDstStr,
305  length,
306  NULL,
307  NULL);
308  }
309 
310  return ret;
311 }
#define IN
Definition: typedefs.h:38
static HICON
Definition: imagelist.c:84
UINT WINAPI GetDlgItemTextW(HWND hDlg, int nIDDlgItem, LPWSTR lpString, int nMaxCount)
Definition: dialog.c:2208
#define IMAGE_ICON
Definition: winuser.h:212
INT GetTextFromEdit(OUT LPWSTR lpString, IN HWND hDlg, IN UINT Res)
Definition: misc.c:174
#define WideCharToMultiByte
Definition: compat.h:101
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
BOOL WINAPI DestroyIcon(_In_ HICON)
Definition: cursoricon.c:2022
static BOOL
Definition: misc.c:82
#define LANG_NEUTRAL
Definition: nls.h:22
#define CP_ACP
Definition: compat.h:99
#define FORMAT_MESSAGE_FROM_STRING
Definition: winbase.h:402
#define SUBLANG_DEFAULT
Definition: nls.h:168
_In_ LPCSTR lpName
Definition: winbase.h:2736
LPVOID WINAPI LockResource(HGLOBAL handle)
Definition: res.c:550
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
UINT_PTR WPARAM
Definition: windef.h:207
static LPSTR
Definition: misc.c:33
char * LPSTR
Definition: xmlstorage.h:182
DWORD WINAPI FormatMessageW(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, LPWSTR lpBuffer, DWORD nSize, __ms_va_list *args)
Definition: format_msg.c:583
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
int32_t INT
Definition: typedefs.h:56
HRSRC WINAPI FindResourceW(HINSTANCE hModule, LPCWSTR name, LPCWSTR type)
Definition: res.c:176
CHAR * LPTSTR
Definition: xmlstorage.h:192
BOOL WINAPI ImageList_Destroy(HIMAGELIST himl)
Definition: imagelist.c:928
#define ILC_COLOR32
Definition: commctrl.h:354
#define MB_ICONEXCLAMATION
Definition: winuser.h:779
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
HINSTANCE hInstance
Definition: charmap.c:20
HIMAGELIST WINAPI ImageList_Create(INT cx, INT cy, UINT flags, INT cInitial, INT cGrow)
Definition: imagelist.c:804
#define va_end(ap)
Definition: acmsvcex.h:90
unsigned int BOOL
Definition: ntddk_ex.h:94
HANDLE WINAPI LoadImageW(_In_opt_ HINSTANCE, _In_ LPCWSTR, _In_ UINT, _In_ int, _In_ int, _In_ UINT)
Definition: cursoricon.c:2172
#define FORMAT_MESSAGE_ALLOCATE_BUFFER
Definition: winbase.h:400
HGLOBAL WINAPI LoadResource(HINSTANCE hModule, HRSRC hRsrc)
Definition: res.c:532
smooth NULL
Definition: ftsmooth.c:416
LONG_PTR LPARAM
Definition: windef.h:208
char * va_list
Definition: acmsvcex.h:78
DWORD LoadAndFormatString(IN HINSTANCE hInstance, IN UINT uID, OUT LPTSTR *lpTarget,...)
Definition: misc.c:86
const char * LPCSTR
Definition: xmlstorage.h:183
#define FORMAT_MESSAGE_FROM_SYSTEM
Definition: winbase.h:404
#define LMEM_FIXED
Definition: winbase.h:349
char TCHAR
Definition: xmlstorage.h:189
#define GetProcessHeap()
Definition: compat.h:395
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
DWORD UnicodeToAnsi(LPCWSTR lpSrcStr, LPSTR *lpDstStr)
Definition: misc.c:289
int WINAPI MessageBoxW(_In_opt_ HWND, _In_opt_ LPCWSTR, _In_opt_ LPCWSTR, _In_ UINT)
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
__wchar_t WCHAR
Definition: xmlstorage.h:180
GLenum GLuint GLenum GLsizei length
Definition: glext.h:5579
int WINAPI GetWindowTextLengthW(_In_ HWND)
unsigned long DWORD
Definition: ntddk_ex.h:95
VOID DisplayMessage(LPWSTR lpMsg)
Definition: misc.c:211
HWND hStatusBar
Definition: main.cpp:35
INT WINAPI ImageList_AddIcon(HIMAGELIST himl, HICON hIcon)
Definition: imagelist.c:540
int ret
VOID DisplayError(DWORD dwError)
Definition: misc.c:110
static const WCHAR L[]
Definition: oid.c:1250
#define SB_SETTEXT
Definition: commctrl.h:1945
HIMAGELIST InitImageList(UINT StartResource, UINT EndResource, UINT Width, UINT Height, ULONG type)
Definition: misc.c:219
#define MB_ICONERROR
Definition: winuser.h:781
#define ILC_MASK
Definition: commctrl.h:347
GLenum GLsizei len
Definition: glext.h:6722
#define RT_STRING
Definition: pedump.c:368
LPCWSTR lpFormat
Definition: trayclock.cpp:32
#define err(...)
#define FORMAT_MESSAGE_IGNORE_INSERTS
Definition: winbase.h:401
HINSTANCE hInst
Definition: dxdiag.c:13
DWORD AnsiToUnicode(LPCSTR lpSrcStr, LPWSTR *lpDstStr)
Definition: misc.c:266
HICON hIcon
Definition: msconfig.c:44
HLOCAL NTAPI LocalFree(HLOCAL hMem)
Definition: heapmem.c:1577
INT AllocAndLoadString(OUT LPWSTR *lpTarget, IN HINSTANCE hInst, IN UINT uID)
Definition: misc.c:50
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define va_start(ap, A)
Definition: acmsvcex.h:91
unsigned int UINT
Definition: ndis.h:50
#define MB_OK
Definition: winuser.h:784
#define MultiByteToWideChar
Definition: compat.h:100
#define OUT
Definition: typedefs.h:39
static LPWSTR
Definition: misc.c:35
#define MAKELANGID(p, s)
Definition: nls.h:15
BOOL StatusBarLoadAndFormatString(IN HWND hStatusBar, IN INT PartId, IN HINSTANCE hInstance, IN UINT uID,...)
Definition: misc.c:108
HLOCAL NTAPI LocalAlloc(UINT uFlags, SIZE_T dwBytes)
Definition: heapmem.c:1373
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
WCHAR * LPWSTR
Definition: xmlstorage.h:184
#define LR_DEFAULTCOLOR
Definition: winuser.h:1077
INT LengthOfStrResource(IN HINSTANCE hInst, IN UINT uID)
Definition: misc.c:23
size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
BOOL StatusBarLoadString(IN HWND hStatusBar, IN INT PartId, IN HINSTANCE hInstance, IN UINT uID)
Definition: misc.c:150