133 lines
3.2 KiB
C++
133 lines
3.2 KiB
C++
//+----------------------------------------------------------------------------
|
|
//
|
|
// 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 <resource ID, help ID>
|
|
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
|