ReactOS  0.4.12-dev-18-gf469aca
error.c
Go to the documentation of this file.
1 /*
2  * Regedit errors, warnings, informations displaying
3  *
4  * Copyright (C) 2010 Adam Kachwalla <geekdundee@gmail.com>
5  * Copyright (C) 2012 Hermès Bélusca - Maïto <hermes.belusca@sfr.fr>
6  *
7  * This library is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Lesser General Public
9  * License as published by the Free Software Foundation; either
10  * version 2.1 of the License, or (at your option) any later version.
11  *
12  * This library is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with this library; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20  */
21 
22 #include "regedit.h"
23 
24 int ErrorMessageBox(HWND hWnd, LPCWSTR lpTitle, DWORD dwErrorCode, ...)
25 {
26  int iRet = 0;
27  LPWSTR lpMsgBuf = NULL;
28  DWORD Status = 0;
29  va_list args;
30 
31  va_start(args, dwErrorCode);
32 
34  NULL,
35  dwErrorCode,
37  (LPWSTR)&lpMsgBuf,
38  0,
39  &args);
40 
41  va_end(args);
42 
43  iRet = MessageBoxW(hWnd, (Status && lpMsgBuf ? lpMsgBuf : L"Error displaying error message."), lpTitle, MB_OK | MB_ICONERROR);
44 
45  if (lpMsgBuf) LocalFree(lpMsgBuf);
46 
47  /* Return the MessageBoxW information */
48  return iRet;
49 }
50 
51 int InfoMessageBox(HWND hWnd, UINT uType, LPCWSTR lpTitle, LPCWSTR lpMessage, ...)
52 {
53  int iRet = 0;
54  LPWSTR lpMsgBuf = NULL;
55  va_list args;
56 
57  va_start(args, lpMessage);
58 
59  if (lpMessage)
60  {
61  SIZE_T strLen = _vscwprintf(lpMessage, args);
62 
63  /* Create a buffer on the heap and zero it out (LPTR) */
64  lpMsgBuf = (LPWSTR)LocalAlloc(LPTR, (strLen + 1) * sizeof(WCHAR));
65  if (lpMsgBuf)
66  {
67  _vsnwprintf(lpMsgBuf, strLen, lpMessage, args);
68  }
69  }
70 
71  va_end(args);
72 
73  iRet = MessageBoxW(hWnd, (lpMessage && lpMsgBuf ? lpMsgBuf : L"Error displaying info message."), lpTitle, uType);
74 
75  if (lpMsgBuf) LocalFree(lpMsgBuf);
76 
77  /* Return the MessageBoxW information */
78  return iRet;
79 }
int ErrorMessageBox(HWND hWnd, LPCWSTR lpTitle, DWORD dwErrorCode,...)
Definition: error.c:24
#define LANG_NEUTRAL
Definition: nls.h:22
#define SUBLANG_DEFAULT
Definition: nls.h:168
HWND hWnd
Definition: settings.c:17
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185
int InfoMessageBox(HWND hWnd, UINT uType, LPCWSTR lpTitle, LPCWSTR lpMessage,...)
Definition: error.c:51
DWORD WINAPI FormatMessageW(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, LPWSTR lpBuffer, DWORD nSize, __ms_va_list *args)
Definition: format_msg.c:583
#define WCHAR
Definition: msvc.h:43
#define va_end(ap)
Definition: acmsvcex.h:90
#define FORMAT_MESSAGE_ALLOCATE_BUFFER
Definition: winbase.h:400
smooth NULL
Definition: ftsmooth.c:416
char * va_list
Definition: acmsvcex.h:78
#define FORMAT_MESSAGE_FROM_SYSTEM
Definition: winbase.h:404
int WINAPI MessageBoxW(_In_opt_ HWND, _In_opt_ LPCWSTR, _In_opt_ LPCWSTR, _In_ UINT)
unsigned int UINT
Definition: ndis.h:50
unsigned long DWORD
Definition: ntddk_ex.h:95
static const WCHAR L[]
Definition: oid.c:1087
#define MB_ICONERROR
Definition: winuser.h:781
Status
Definition: gdiplustypes.h:24
ULONG_PTR SIZE_T
Definition: typedefs.h:78
_Check_return_ _CRTIMP int __cdecl _vscwprintf(_In_z_ _Printf_format_string_ const wchar_t *_Format, va_list _ArgList)
_CRTIMP int __cdecl _vsnwprintf(wchar_t *_Dest, size_t _Count, const wchar_t *_Format, va_list _Args)
HLOCAL NTAPI LocalFree(HLOCAL hMem)
Definition: heapmem.c:1577
#define va_start(ap, A)
Definition: acmsvcex.h:91
#define MB_OK
Definition: winuser.h:784
TCHAR lpTitle[80]
Definition: ctm.c:67
#define LPTR
Definition: winbase.h:362
#define MAKELANGID(p, s)
Definition: nls.h:15
HLOCAL NTAPI LocalAlloc(UINT uFlags, SIZE_T dwBytes)
Definition: heapmem.c:1373
WCHAR * LPWSTR
Definition: xmlstorage.h:184
#define args
Definition: format.c:66