From d63442ca3b89d7145524e7ce55c7e6c021a28e59 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 8 Jun 2016 10:19:37 +0200 Subject: [PATCH] Implement ui_win32_msg_window --- ui/drivers/win32/ui_win32_msg_window.c | 45 +++++++++++++++++++++++--- 1 file changed, 41 insertions(+), 4 deletions(-) diff --git a/ui/drivers/win32/ui_win32_msg_window.c b/ui/drivers/win32/ui_win32_msg_window.c index 24ce672389..97a20b73a2 100644 --- a/ui/drivers/win32/ui_win32_msg_window.c +++ b/ui/drivers/win32/ui_win32_msg_window.c @@ -35,29 +35,66 @@ static enum ui_msg_window_response ui_msg_window_win32_response(ui_msg_window_st return UI_MSG_RESPONSE_YES; case IDNO: return UI_MSG_RESPONSE_NO; + default: + break; + } + + switch (state->buttons) + { + case UI_MSG_WINDOW_OK: + return UI_MSG_RESPONSE_OK; + case UI_MSG_WINDOW_OKCANCEL: + return UI_MSG_RESPONSE_CANCEL; + case UI_MSG_WINDOW_YESNO: + return UI_MSG_RESPONSE_NO; + case UI_MSG_WINDOW_YESNOCANCEL: + return UI_MSG_RESPONSE_CANCEL; + default: + break; } return UI_MSG_RESPONSE_NA; } +static UINT ui_msg_window_win32_buttons(ui_msg_window_state *state) +{ + switch (state->buttons) + { + case UI_MSG_WINDOW_OK: + return MB_OK; + case UI_MSG_WINDOW_OKCANCEL: + return MB_OKCANCEL; + case UI_MSG_WINDOW_YESNO: + return MB_YESNO; + case UI_MSG_WINDOW_YESNOCANCEL: + return MB_YESNOCANCEL; + } + + return 0; +} + static enum ui_msg_window_response ui_msg_window_win32_error(ui_msg_window_state *state) { - return UI_MSG_RESPONSE_CANCEL; + UINT flags = MB_ICONERROR | ui_msg_window_win32_buttons(state); + return ui_msg_window_win32_response(state, MessageBoxA(NULL, (LPCSTR)state->text, (LPCSTR)state->title, flags)); } static enum ui_msg_window_response ui_msg_window_win32_information(ui_msg_window_state *state) { - return UI_MSG_RESPONSE_CANCEL; + UINT flags = MB_ICONINFORMATION | ui_msg_window_win32_buttons(state); + return ui_msg_window_win32_response(state, MessageBoxA(NULL, (LPCSTR)state->text, (LPCSTR)state->title, flags)); } static enum ui_msg_window_response ui_msg_window_win32_question(ui_msg_window_state *state) { - return UI_MSG_RESPONSE_CANCEL; + UINT flags = MB_ICONQUESTION | ui_msg_window_win32_buttons(state); + return ui_msg_window_win32_response(state, MessageBoxA(NULL, (LPCSTR)state->text, (LPCSTR)state->title, flags)); } static enum ui_msg_window_response ui_msg_window_win32_warning(ui_msg_window_state *state) { - return UI_MSG_RESPONSE_CANCEL; + UINT flags = MB_ICONWARNING | ui_msg_window_win32_buttons(state); + return ui_msg_window_win32_response(state, MessageBoxA(NULL, (LPCSTR)state->text, (LPCSTR)state->title, flags)); } const ui_msg_window_t ui_msg_window_win32 = {