38 lines
1.2 KiB
C
38 lines
1.2 KiB
C
#include <windows.h>
|
|
#include <stdio.h>
|
|
|
|
#include <msg.h>
|
|
|
|
#define DEF_MSG_FN(name, type, printfn, mbfn, projname, flags, suffix) \
|
|
void name(const type *format, ...) { \
|
|
va_list args; \
|
|
va_start(args, format); \
|
|
\
|
|
int count = printfn(NULL, 0, format, args) + 1; \
|
|
\
|
|
type *buf = malloc(count * sizeof(type)); \
|
|
printfn(buf, count, format, args); \
|
|
\
|
|
mbfn(NULL, buf, projname, flags); \
|
|
\
|
|
va_end(args); \
|
|
\
|
|
free(buf); \
|
|
suffix; \
|
|
}
|
|
|
|
const char *TITLE_A = "Jadeite Autopatcher";
|
|
const wchar_t *TITLE_W = L"Jadeite Autopatcher";
|
|
|
|
// Error
|
|
DEF_MSG_FN(msg_err_a, char, _vsnprintf, MessageBoxA, TITLE_A, MB_OK | MB_ICONERROR, exit(1))
|
|
DEF_MSG_FN(msg_err_w, wchar_t, _vsnwprintf, MessageBoxW, TITLE_W, MB_OK | MB_ICONERROR, exit(1))
|
|
|
|
// Warn
|
|
DEF_MSG_FN(msg_warn_a, char, _vsnprintf, MessageBoxA, TITLE_A, MB_OK | MB_ICONEXCLAMATION,)
|
|
DEF_MSG_FN(msg_warn_w, wchar_t, _vsnwprintf, MessageBoxW, TITLE_W, MB_OK | MB_ICONEXCLAMATION,)
|
|
|
|
// Info
|
|
DEF_MSG_FN(msg_info_a, char, _vsnprintf, MessageBoxA, TITLE_A, MB_OK | MB_ICONINFORMATION,)
|
|
DEF_MSG_FN(msg_info_w, wchar_t, _vsnwprintf, MessageBoxW, TITLE_W, MB_OK | MB_ICONINFORMATION,)
|