//+---------------------------------------------------------------------------- // // File: modaldlg.h // // Module: CMDIAL32.DLL and CMMON32.EXE // // Synopsis: Definition of the classes CWindowWithHelp, CModalDlg // // Copyright (c) 1998-1999 Microsoft Corporation // // Author: fengsun Created 02/17/98 // //+---------------------------------------------------------------------------- #ifndef MODALDLG_H #define MODALDLG_H #include "CmDebug.h" //+--------------------------------------------------------------------------- // // class CWindowWithHelp // // Description: A general window class that has context help // // History: fengsun Created 10/30/97 // //---------------------------------------------------------------------------- class CWindowWithHelp { public: CWindowWithHelp(const DWORD* pHelpPairs, const TCHAR* lpszHelpFile = NULL) ; ~CWindowWithHelp(); HWND GetHwnd() const { return m_hWnd;} void SetHelpFileName(const TCHAR* lpszHelpFile); protected: HWND m_hWnd; const DWORD* m_pHelpPairs; // pairs of LPTSTR m_lpszHelpFile; // the help file name void OnHelp(const HELPINFO* pHelpInfo); // WM_HELP BOOL OnContextMenu( HWND hWnd, POINT& pos ); // WM_CONTEXTMENU BOOL HasContextHelp(HWND hWndCtrl) const; public: #ifdef DEBUG void AssertValid() { MYDBGASSERT(m_hWnd == NULL || IsWindow(m_hWnd)); } #endif }; //+--------------------------------------------------------------------------- // // class CModalDlg // // Description: A general modal dialog class // // History: fengsun Created 10/30/97 // //---------------------------------------------------------------------------- class CModalDlg :public CWindowWithHelp { public: CModalDlg(const DWORD* pHelpPairs = NULL, const TCHAR* lpszHelpFile = NULL) : CWindowWithHelp(pHelpPairs, lpszHelpFile){}; // // Create the dialog box // INT_PTR DoDialogBox(HINSTANCE hInstance, LPCTSTR lpTemplateName, HWND hWndParent); INT_PTR DoDialogBox(HINSTANCE hInstance, DWORD dwTemplateId, HWND hWndParent); virtual BOOL OnInitDialog(); // WM_INITDIALOG virtual void OnOK(); // WM_COMMAND, IDOK virtual void OnCancel(); // WM_COMMAND, IDCANCEL virtual DWORD OnOtherCommand(WPARAM wParam, LPARAM lParam ); virtual DWORD OnOtherMessage(UINT uMsg, WPARAM wParam, LPARAM lParam ); protected: static BOOL CALLBACK ModalDialogProc(HWND hwndDlg,UINT uMsg,WPARAM wParam, LPARAM lParam); }; // // Inline functions // inline INT_PTR CModalDlg::DoDialogBox(HINSTANCE hInstance, DWORD dwTemplateId, HWND hWndParent) { return DoDialogBox(hInstance, (LPCTSTR)ULongToPtr(dwTemplateId), hWndParent); } inline BOOL CModalDlg::OnInitDialog() { // // set the default keyboard focus // return TRUE; } inline void CModalDlg::OnOK() { EndDialog(m_hWnd, IDOK); } inline void CModalDlg::OnCancel() { EndDialog(m_hWnd, IDCANCEL); } inline DWORD CModalDlg::OnOtherCommand(WPARAM , LPARAM ) { return FALSE; } inline DWORD CModalDlg::OnOtherMessage(UINT , WPARAM , LPARAM ) { return FALSE; } #endif