/*==LICENSE==* CyanWorlds.com Engine - MMOG client, server and tools Copyright (C) 2011 Cyan Worlds, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . You can contact Cyan Worlds, Inc. by email legal@cyan.com or by snail mail at: Cyan Worlds, Inc. 14617 N Newport Hwy Mead, WA 99021 *==LICENSE==*/ #include "OptionalDialog.h" #include "resource.h" #include LRESULT CALLBACK OptionalDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam); bool OptionalDialog(HINSTANCE hInstance, HWND hParent, char* desc, unsigned int timeoutsecs, bool defaultyes) { HWND hWnd = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_OPTIONALDIALOG), hParent, (DLGPROC) OptionalDialogProc); ShowWindow(hWnd, SW_SHOW); if (timeoutsecs > 0) { // Set up timer SetTimer(hWnd,WM_USER+1,timeoutsecs*1000,NULL); char timeStr[20]; Static_SetText(GetDlgItem(hWnd,IDC_TIMELEFT),itoa(timeoutsecs,timeStr,10)); } Static_SetText(GetDlgItem(hWnd,IDC_DESCRIPTION),desc); if (defaultyes) { SetWindowLong(GetDlgItem(hWnd,IDC_BUTTON_YES),GWL_STYLE, GetWindowLong(GetDlgItem(hWnd,IDC_BUTTON_YES),GWL_STYLE) | BS_DEFPUSHBUTTON); Static_SetText(GetDlgItem(hWnd,IDC_DEFAULT),"Default: Yes"); } else { SetWindowLong(GetDlgItem(hWnd,IDC_BUTTON_NO),GWL_STYLE, GetWindowLong(GetDlgItem(hWnd,IDC_BUTTON_NO),GWL_STYLE) | BS_DEFPUSHBUTTON); Static_SetText(GetDlgItem(hWnd,IDC_DEFAULT),"Default: No"); } // Main message loop: MSG msg; while (GetMessage(&msg, NULL, 0, 0)) { if (!IsWindow(hWnd) || !IsDialogMessage(hWnd, &msg)) { TranslateMessage(&msg); DispatchMessage(&msg); } } DestroyWindow(hWnd); return msg.wParam == -1 ? defaultyes : (bool)(msg.wParam); } // Mesage handler for about box. LRESULT CALLBACK OptionalDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_INITDIALOG: return TRUE; case WM_TIMER: PostQuitMessage(-1); return TRUE; case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_BUTTON_YES: PostQuitMessage(1); return TRUE; case IDC_BUTTON_NO: PostQuitMessage(0); return TRUE; default: return FALSE; } break; } return FALSE; }