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
|