ReactOS 0.4.16-dev-188-g678aa63
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 * LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
7 */
8
9#include "regedit.h"
10
12{
13 int iRet = 0;
14 LPWSTR lpMsgBuf = NULL;
15 DWORD Status = 0;
17
18 va_start(args, dwErrorCode);
19
21 NULL,
22 dwErrorCode,
24 (LPWSTR)&lpMsgBuf,
25 0,
26 &args);
27
28 va_end(args);
29
30 iRet = MessageBoxW(hWnd, (Status && lpMsgBuf ? lpMsgBuf : L"Error displaying error message."), lpTitle, MB_OK | MB_ICONERROR);
31
32 if (lpMsgBuf) LocalFree(lpMsgBuf);
33
34 /* Return the MessageBoxW information */
35 return iRet;
36}
37
38int InfoMessageBox(HWND hWnd, UINT uType, LPCWSTR lpTitle, LPCWSTR lpMessage, ...)
39{
40 int iRet = 0;
41 LPWSTR lpMsgBuf = NULL;
43
44 va_start(args, lpMessage);
45
46 if (lpMessage)
47 {
48 SIZE_T strLen = _vscwprintf(lpMessage, args);
49
50 /* Create a buffer on the heap and zero it out (LPTR) */
51 lpMsgBuf = (LPWSTR)LocalAlloc(LPTR, (strLen + 1) * sizeof(WCHAR));
52 if (lpMsgBuf)
53 {
54 _vsnwprintf(lpMsgBuf, strLen, lpMessage, args);
55 }
56 }
57
58 va_end(args);
59
60 iRet = MessageBoxW(hWnd, (lpMessage && lpMsgBuf ? lpMsgBuf : L"Error displaying info message."), lpTitle, uType);
61
62 if (lpMsgBuf) LocalFree(lpMsgBuf);
63
64 /* Return the MessageBoxW information */
65 return iRet;
66}
char * va_list
Definition: acmsvcex.h:78
#define va_end(ap)
Definition: acmsvcex.h:90
#define va_start(ap, A)
Definition: acmsvcex.h:91
HWND hWnd
Definition: settings.c:17
int InfoMessageBox(HWND hWnd, UINT uType, LPCWSTR lpTitle, LPCWSTR lpMessage,...)
Definition: error.c:38
int ErrorMessageBox(HWND hWnd, LPCWSTR lpTitle, DWORD dwErrorCode,...)
Definition: error.c:11
TCHAR lpTitle[80]
Definition: ctm.c:69
#define NULL
Definition: types.h:112
DWORD WINAPI FormatMessageW(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, LPWSTR lpBuffer, DWORD nSize, __ms_va_list *args)
Definition: format_msg.c:583
unsigned long DWORD
Definition: ntddk_ex.h:95
Status
Definition: gdiplustypes.h:25
HLOCAL NTAPI LocalAlloc(UINT uFlags, SIZE_T dwBytes)
Definition: heapmem.c:1390
HLOCAL NTAPI LocalFree(HLOCAL hMem)
Definition: heapmem.c:1594
_CRTIMP int __cdecl _vsnwprintf(wchar_t *_Dest, size_t _Count, const wchar_t *_Format, va_list _Args)
_Check_return_ _CRTIMP int __cdecl _vscwprintf(_In_z_ _Printf_format_string_ const wchar_t *_Format, va_list _ArgList)
unsigned int UINT
Definition: ndis.h:50
#define L(x)
Definition: ntvdm.h:50
#define LANG_NEUTRAL
Definition: nls.h:22
#define MAKELANGID(p, s)
Definition: nls.h:15
#define SUBLANG_DEFAULT
Definition: nls.h:168
#define args
Definition: format.c:66
Definition: match.c:390
ULONG_PTR SIZE_T
Definition: typedefs.h:80
#define LPTR
Definition: winbase.h:381
#define FORMAT_MESSAGE_FROM_SYSTEM
Definition: winbase.h:423
#define FORMAT_MESSAGE_ALLOCATE_BUFFER
Definition: winbase.h:419
int WINAPI MessageBoxW(_In_opt_ HWND hWnd, _In_opt_ LPCWSTR lpText, _In_opt_ LPCWSTR lpCaption, _In_ UINT uType)
#define MB_ICONERROR
Definition: winuser.h:790
#define MB_OK
Definition: winuser.h:793
__wchar_t WCHAR
Definition: xmlstorage.h:180
WCHAR * LPWSTR
Definition: xmlstorage.h:184
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185