216 lines
4.9 KiB
C++
216 lines
4.9 KiB
C++
/////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Copyright (c) 1996-1998 Microsoft Corporation
|
|
//
|
|
// Module Name:
|
|
// AtlBaseDlg.h
|
|
//
|
|
// Desription:
|
|
// Definition of the CBaseDlg class.
|
|
//
|
|
// Author:
|
|
// David Potter (davidp) February 9, 1998
|
|
//
|
|
// Revision History:
|
|
//
|
|
// Notes:
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef __ATLBASEDLG_H_
|
|
#define __ATLBASEDLG_H_
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// Forward Class Declarations
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
template < class T > class CBaseDlg;
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// External Class Declarations
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// Include Files
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef __ATLDBGWIN_H_
|
|
#include "AtlDbgWin.h" // for DBG_xxx routines
|
|
#endif
|
|
|
|
#ifndef __ATLPOPUPHELP_H_
|
|
#include "AtlPopupHelp.h" // for COnlineHelp
|
|
#endif
|
|
|
|
#ifndef __CTRLUTIL_H
|
|
#include "DlgItemUtils.h" // for CDlgItemUtils
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// Type Definitions
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
//++
|
|
//
|
|
// class CBaseDlg
|
|
//
|
|
// Description:
|
|
// Base dialog class. Provides the following features:
|
|
// -- Popup help.
|
|
// -- Dialog item utilities.
|
|
// -- Debugging support.
|
|
//
|
|
// Inheritance:
|
|
// CBaseDlg< T >
|
|
// CDialogImpl< T >, CPopupHelp< T >, CDlgItemUtils
|
|
//
|
|
//--
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
template< class T >
|
|
class CBaseDlg
|
|
: public CDialogImpl< T >
|
|
, public CPopupHelp< T >
|
|
, public CDlgItemUtils
|
|
{
|
|
typedef CBaseDlg< T > thisClass;
|
|
typedef CDialogImpl< T > baseClass;
|
|
|
|
public:
|
|
//
|
|
// Construction
|
|
//
|
|
|
|
// Constructor taking a string pointer for the title
|
|
CBaseDlg(
|
|
IN OUT LPCTSTR lpszTitle = NULL
|
|
)
|
|
{
|
|
if ( lpszTitle != NULL )
|
|
{
|
|
m_strTitle = lpszTitle;
|
|
} // if: title specified
|
|
|
|
} //*** CBaseDlg( lpszTitle )
|
|
|
|
// Constructor taking a resource ID for the title
|
|
CBaseDlg( IN UINT nIDTitle )
|
|
{
|
|
m_strTitle.LoadString( nIDTitle );
|
|
|
|
} //*** CBaseDlg( nIDTitle )
|
|
|
|
// Initialize the page
|
|
virtual BOOL BInit( void )
|
|
{
|
|
return TRUE;
|
|
|
|
} //*** BInit()
|
|
|
|
protected:
|
|
//
|
|
// CBasePage helper methods.
|
|
//
|
|
|
|
// Attach a control to a dialog item.
|
|
void AttachControl( CWindow & rwndControl, UINT idc )
|
|
{
|
|
HWND hwndControl = GetDlgItem( idc );
|
|
ATLASSERT( hwndControl != NULL );
|
|
rwndControl.Attach( hwndControl );
|
|
|
|
} //*** AttachControl()
|
|
|
|
public:
|
|
//
|
|
// CBaseDlg public methods to override.
|
|
//
|
|
|
|
// Update data on or from the page
|
|
virtual BOOL UpdateData( BOOL bSaveAndValidate )
|
|
{
|
|
return TRUE;
|
|
|
|
} //*** UpdateData()
|
|
|
|
public:
|
|
//
|
|
// Message handler functions.
|
|
//
|
|
|
|
BEGIN_MSG_MAP( CBaseDlg< T > )
|
|
MESSAGE_HANDLER( WM_INITDIALOG, OnInitDialog )
|
|
#if DBG
|
|
#ifdef _DBG_MSG
|
|
MESSAGE_RANGE_HANDLER( 0, 0xffffffff, OnMsg )
|
|
#endif // _DBG_MSG
|
|
#ifdef _DBG_MSG_NOTIFY
|
|
MESSAGE_HANDLER( WM_NOTIFY, OnNotify )
|
|
#endif // _DBG_MSG_NOTIFY
|
|
#ifdef _DBG_MSG_COMMAND
|
|
MESSAGE_HANDLER( WM_COMMAND, OnCommand )
|
|
#endif // _DBG_MSG_COMMAND
|
|
#endif // DBG
|
|
CHAIN_MSG_MAP( CPopupHelp< T > )
|
|
END_MSG_MAP()
|
|
|
|
// Handler for the WM_INITDIALOG message
|
|
LRESULT OnInitDialog(
|
|
UINT uMsg,
|
|
WPARAM wParam,
|
|
LPARAM lParam,
|
|
BOOL & bHandled
|
|
)
|
|
{
|
|
T * pT = static_cast< T * >( this );
|
|
return pT->OnInitDialog();
|
|
|
|
} //*** OnInitDialog()
|
|
|
|
// Handler for the WM_INITDIALOG message
|
|
LRESULT OnInitDialog( void )
|
|
{
|
|
return TRUE;
|
|
|
|
} //*** OnInitDialog()
|
|
|
|
#if DBG && defined( _DBG_MSG )
|
|
// Handler for any message
|
|
LRESULT OnMsg( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL & bHandled )
|
|
{
|
|
return DBG_OnMsg( uMsg, wParam, lParam, bHandled, T::s_pszClassName );
|
|
|
|
} //*** OnMsg()
|
|
#endif // DBG && defined( _DBG_MSG )
|
|
|
|
#if DBG && defined( _DBG_MSG_NOTIFY )
|
|
// Handler for the WM_NOTIFY message
|
|
LRESULT OnNotify( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL & bHandled )
|
|
{
|
|
return DBG_OnNotify( uMsg, wParam, lParam, bHandled, T::s_pszClassName, T::s_rgmapCtrlNames );
|
|
|
|
} //*** OnNotify()
|
|
#endif // DBG && defined( _DBG_MSG_NOTIFY )
|
|
|
|
#if DBG && defined( _DBG_MSG_COMMAND )
|
|
// Handler for the WM_COMMAND message
|
|
LRESULT OnCommand( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL & bHandled )
|
|
{
|
|
return DBG_OnCommand( uMsg, wParam, lParam, bHandled, T::s_pszClassName, T::s_rgmapCtrlNames );
|
|
|
|
} //*** OnCommand()
|
|
#endif // DBG && defined( _DBG_MSG_COMMAND )
|
|
|
|
// Implementation
|
|
protected:
|
|
CString m_strTitle; // Used to support resource IDs for the title.
|
|
|
|
const CString & StrTitle( void ) const { return m_strTitle; }
|
|
|
|
}; //*** class CBaseDlg
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#endif // __ATLBASEDLG_H_
|