MFC基于对话框程序
2006-07-19 11:28:32 来源:WEB开发网核心提示: 下面,我们再来看看CDialogDlg类的定义,它是派生于CDialog的,MFC基于对话框程序(4),它重写了以下函数CDialogDlg(CWnd* pParent = NULL); 自定义的构造函数virtual BOOL OnInitDialog(); 对话框初始化消息操作函数af
下面,我们再来看看CDialogDlg类的定义,它是派生于CDialog的。它重写了以下函数
CDialogDlg(CWnd* pParent = NULL); 自定义的构造函数
virtual BOOL OnInitDialog(); 对话框初始化消息操作函数
afx_msg void OnSysCommand(UINT nID, LPARAM lParam); 系统菜单消息响应函数
afx_msg void OnPaint(); 对话框重绘响应函数
afx_msg HCURSOR OnQueryDragIcon(); 最小化图标询问响应函数
另外,要注意的是在CDialogDlg类的定义体中有这么一个枚举的定义:
enum { IDD = IDD_DIALOG_DIALOG };
它表明这个CDialogDlg类使用的对话框模板是IDD_DIALOG_DIALOG。
CDialogDlg派生层次如下
CDialogDlg=>CDialog=>CWnd=>CCmdTarget=>CObject
先来看看构造函数:
CDialogDlg::CDialogDlg(CWnd* pParent /*=NULL*/)
: CDialog(CDialogDlg::IDD/*这个IDD就是那个枚举的值*/, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
在这个函数中首先,调用父类CDialog的构造函数来完成默认构造操作。其次,它使用AfxGetApp函数取得全局CWinApp对象theApp的指针,并使用它的LoadIcon函数来取得程序中IDR_MAINFRAME图标资源,并赋给成员变量m_hIcon。这个图标可以在资源视图的ICON中可以的查到和设定。
在CDialogDlg的实现文件CDialogDlg.cpp中,可以找到如下一段语句
BEGIN_MESSAGE_MAP(CDialogDlg, CDialog)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
这是一段消息映射宏定义段。表示这个对话框类可以响应WM_SYSCOMMAND ,WM_PAINT,WM_QUERYDRAGICON消息。它们的响应函数,系统默认分别为OnSysCommand,OnPaint,OnQueryDragIcon。这段的意思是说,如果CDialogDlg类的对话框接收到WM_SYSCOMMAND消息,就会调用OnSysCommand。其它消息以此为例。不过,这些响应段一般是用不着我们自己手动添写的,是由系统来管理的。你如果要分析一个MFC程序代码,这一块是一个很好的切入点,可以清楚的看到这个程序到底都可以响应什么消息,都有些什么功能。以上这些宏都可以在MSDN中查到。
更多精彩
赞助商链接