Windows 编程/类层次结构
外观
大多数 MFC 库的根/基类。它为程序员提供的一些功能包括序列化支持、运行时类信息和对象诊断输出。从 CObject 派生的任何类都可以利用这些功能。
CObject 类 在 AFX.H 中
字段摘要
static const AFX_CORE_DATA CRuntimeClass classCObject
构造函数摘要
protected CObject() private CObject( const CObject& objectSrc ) virtual ~CObject()
方法摘要
void PASCAL operator delete( void* p ) virtual CRuntimeClass* GetRuntimeClass() const BOOL IsKindOf( const CRuntimeClass* pClass ) const BOOL IsSerializable() const void* PASCAL operator new( size_t, void* p ) void* PASCAL operator new( size_t nSize ) virtual void Serialize( CArchive& ar )
此类封装了列表视图控件的功能,列表视图控件是一种显示项目集合的控件,每个项目都包含一个图标和一个标签。
CListCtrl 类 在 AFXCMN.H 中
CObject
| +--CCmdTarget | +--CWnd | +--CListCtrl
class CListCtrl 扩展 CWnd
从 CWnd 类继承的字段
m_hWnd, wndTop, wndBottom, wndTopMost, wndNoTopMost, m_hWndOwner, m_nFlags, m_pfnSuper, m_nMsgDragList, m_nModalResult, m_pDropTarget, m_pCtrlCont, m_pCtrlSite, messageMap
从 CCmdTarget 类继承的字段
messageMap, commandMap, dispatchMap, connectionMap, interfaceMap, eventsinkMap, m_dwRef, m_pOuterUnknown, m_xInnerUnknown, m_xDispatch, m_bResultExpected, m_xConnPtContainer
从 CObject 类继承的字段
classCObject
此类封装了工具栏的功能,工具栏是一排位图按钮和/或分隔符。CToolBar 对象通常是继承自 CFrameWnd 或 MDIFrameWnd 类的框架窗口对象的嵌入成员。
自定义类行为的标准技术
MFC 路由消息的机制也被称为消息映射系统,该系统是为了封装旧的 C API 并降低程序员的复杂程度而创建的。
// a Message Map example
BEGIN_MESSAGE_MAP( ClNOMainFrameWnd, CFrameWnd )
ON_WM_SYSCOMMAND()
ON_WM_CREATE()
ON_WM_SIZE()
ON_WM_CLOSE()
ON_WM_MEASUREITEM()
ON_WM_INITMENUPOPUP()
ON_WM_MENUCHAR()
ON_WM_DESTROY()
ON_REGISTERED_MESSAGE( D_WM_REQUEST, OnMsgReqToShowWnd )
ON_COMMAND( ID_APP_TRAYCLICK, OnTrayClick )
ON_MESSAGE( C_WM_TIPACTION, OnTipOfTheDayAction )
END_MESSAGE_MAP()
消息映射宏
- ON_COMMAND 和 ON_BN_CLICKED
- ON_COMMAND 和 ON_BN_CLICKED 是相同的,MFC 命令和控件宏预设为处理 Windows 消息 WM_COMMAND,而通知路由机制使用命令 ID 来决定路由到哪里。具有为零(BN_CLICKED)的控件通知代码的通知被解释为命令。
- ON_UPDATE_COMMAND_UI
- ON_UPDATE_COMMAND_UI 宏。