/******************************************************************************* * * (C) COPYRIGHT MICROSOFT CORPORATION, 2000 * * TITLE: MBOXEX.H * * VERSION: 1.0 * * AUTHOR: ShaunIv * * DATE: 7/13/2000 * * DESCRIPTION: Super duper message box * *******************************************************************************/ #ifndef __MBOXEX_H_INCLUDED #define __MBOXEX_H_INCLUDED #include #include class CMessageBoxEx { public: enum { // // Greatest number of buttons allowed // MaxButtons = 4 }; enum { // // Button formats // MBEX_OK = 0x00000000, MBEX_OKCANCEL = 0x00000001, MBEX_YESNO = 0x00000002, MBEX_CANCELRETRY = 0x00000010, MBEX_CANCELRETRYSKIPSKIPALL = 0x00000020, MBEX_YESYESTOALLNONOTOALL = 0x00000040, // // Default button flags // MBEX_DEFBUTTON1 = 0x00000000, MBEX_DEFBUTTON2 = 0x00100000, MBEX_DEFBUTTON3 = 0x00200000, MBEX_DEFBUTTON4 = 0x00400000, // // Icons // MBEX_ICONWARNING = 0x00000100, MBEX_ICONINFORMATION = 0x00000000, MBEX_ICONQUESTION = 0x00000400, MBEX_ICONERROR = 0x00000800, // // Advanced flags // MBEX_HIDEFUTUREMESSAGES = 0x00010000, // // Return values // IDMBEX_OK = 0x00000001, IDMBEX_CANCEL = 0x00000002, IDMBEX_RETRY = 0x00000004, IDMBEX_SKIP = 0x00000005, IDMBEX_YES = 0x00000006, IDMBEX_NO = 0x00000007, IDMBEX_SKIPALL = 0x00000012, IDMBEX_YESTOALL = 0x00000013, IDMBEX_NOTOALL = 0x00000014 }; public: class CData { public: UINT m_Buttons[MaxButtons]; CSimpleString m_strTitle; CSimpleString m_strMessage; UINT m_nButtonCount; UINT m_nFlags; HICON m_hIcon; LPARAM m_lParam; UINT m_nDefault; bool m_bHideMessageInFuture; private: CData( const CData & ); CData &operator=( const CData & ); public: CData(void) : m_strTitle(TEXT("")), m_strMessage(TEXT("")), m_nButtonCount(0), m_nFlags(0), m_hIcon(NULL), m_lParam(0), m_nDefault(0), m_bHideMessageInFuture(FALSE) { ZeroMemory( m_Buttons, ARRAYSIZE(m_Buttons) ); } }; private: HWND m_hWnd; CData *m_pData; private: CMessageBoxEx(void); CMessageBoxEx( const CMessageBoxEx & ); CMessageBoxEx &operator=( const CMessageBoxEx & ); private: explicit CMessageBoxEx( HWND hWnd ); LRESULT OnInitDialog( WPARAM, LPARAM lParam ); LRESULT OnCommand( WPARAM wParam, LPARAM lParam ); public: static INT_PTR CALLBACK DialogProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam ); public: static UINT MessageBox( HWND hWndParent, LPCTSTR pszMessage, LPCTSTR pszTitle, UINT nFlags, bool *pbHideFutureMessages ); static UINT MessageBox( HWND hWndParent, LPCTSTR pszMessage, LPCTSTR pszTitle, UINT nFlags, bool &bHideFutureMessages ); static UINT MessageBox( HWND hWndParent, LPCTSTR pszMessage, LPCTSTR pszTitle, UINT nFlags ); static UINT MessageBox( LPCTSTR pszMessage, LPCTSTR pszTitle, UINT nFlags ); static UINT MessageBox( HWND hWndParent, HINSTANCE hInstance, UINT nMessageId, UINT nTitleId, UINT nFlags, bool &bHideFutureMessages ); static UINT MessageBox( HWND hWndParent, LPCTSTR pszTitle, UINT nFlags, LPCTSTR pszFormat, ... ); static UINT MessageBox( HWND hWndParent, LPCTSTR pszTitle, UINT nFlags, bool &bHideFutureMessages, LPCTSTR pszFormat, ... ); static UINT MessageBox( HWND hWndParent, HINSTANCE hInstance, UINT nTitleId, UINT nFlags, UINT nFormatId, ... ); }; #endif // __MBOXEX_H_INCLUDED