Main Page | Namespace List | Class Hierarchy | Class List | Directories | File List | Namespace Members | Class Members | File Members

# KeosWin32ErrorDialog.cpp

Go to the documentation of this file.

    00001 /*
    00002  * This source file is part of KEOS (Free 3D Engine)
    00003  * For the latest info, see http://www.keosengine.org/
    00004  * E-mails : thierry.vouriot@keosengine.org, yeri@keosengine.org
    00005  *
    00006  * This program is free software; you can redistribute it and/or modify it under
    00007  * the terms of the GNU Lesser General Public License as published by the Free Software
    00008  * Foundation; either version 2 of the License, or (at your option) any later
    00009  * version.
    00010  *
    00011  * This program is distributed in the hope that it will be useful, but WITHOUT
    00012  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
    00013  * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
    00014  *
    00015  * You should have received a copy of the GNU Lesser General Public License along with
    00016  * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
    00017  * Place - Suite 330, Boston, MA 02111-1307, USA, or go to
    00018  * http://www.gnu.org/copyleft/lesser.txt.
    00019  *
    00020  */
    00021 #include "KeosWin32ErrorDialog.h"
    00022 #include "resource.h"
    00023
    00024 namespace
    00025 {
    00026     Keos::CWin32ErrorDialog* dlg;  // This is a pointer to instance, since this is a static member
    00027 }
    00028
    00029 namespace Keos
    00030 {
    00031         //=======================================================================
    00032     // CWin32ErrorDialog implementation
    00033     //=======================================================================
    00034
    00035     //-----------------------------------------------------------------------
    00036     CWin32ErrorDialog::CWin32ErrorDialog(HINSTANCE hInst)
    00037     {
    00038         m_HInstance = hInst;
    00039     }
    00040
    00041         //-----------------------------------------------------------------------
    00042     CWin32ErrorDialog::~CWin32ErrorDialog()
    00043     {
    00044
    00045     }
    00046
    00047         //-----------------------------------------------------------------------
    00048     BOOL CWin32ErrorDialog::DlgProc(HWND hDlg, UINT iMsg, WPARAM wParam, LPARAM lParam)
    00049     {
    00050         HWND hwndDlgItem;
    00051
    00052         switch (iMsg)
    00053         {
    00054
    00055         case WM_INITDIALOG:
    00056             // Center myself
    00057             int x, y, screenWidth, screenHeight;
    00058             RECT rcDlg;
    00059             GetWindowRect(hDlg, &rcDlg);
    00060             screenWidth = GetSystemMetrics(SM_CXFULLSCREEN);
    00061             screenHeight = GetSystemMetrics(SM_CYFULLSCREEN);
    00062
    00063             x = (screenWidth / 2) - ((rcDlg.right - rcDlg.left) / 2);
    00064             y = (screenHeight / 2) - ((rcDlg.bottom - rcDlg.top) / 2);
    00065
    00066             MoveWindow(hDlg, x, y, (rcDlg.right - rcDlg.left),
    00067                 (rcDlg.bottom - rcDlg.top), TRUE);
    00068
    00069             // Fill in details of error
    00070             hwndDlgItem = GetDlgItem(hDlg, IDC_ERRMSG);
    00071             SetWindowText(hwndDlgItem, dlg->m_strErrorMsg.c_str());
    00072
    00073             return TRUE;
    00074         case WM_COMMAND:
    00075             switch (LOWORD(wParam))
    00076             {
    00077             case IDOK:
    00078
    00079                 EndDialog(hDlg, TRUE);
    00080                 return TRUE;
    00081             }
    00082         }
    00083
    00084         return FALSE;
    00085
    00086     }
    00087
    00088         //-----------------------------------------------------------------------
    00089     void CWin32ErrorDialog::Display(const String& strErrorMessage)
    00090     {
    00091         // Display dialog
    00092         // Don't return to caller until dialog dismissed
    00093         dlg = this;
    00094         m_strErrorMsg = strErrorMessage;
    00095         DialogBox(m_HInstance, MAKEINTRESOURCE(IDD_DIALOG_ERROR), NULL, DlgProc);
    00096
    00097
    00098     }
    00099 } // namespace Keos