上次简单的认识了一下MFC初始化过程。这次来认识一下MFC中的消息映射机制。
MFC对话框程序的消息处理(消息映射机制)
1.为一个对话框模板建立一个与之关联的CDialog或CDialogEx派生类
2.在需要启动对话框用派生类定义一个对象,在用对象调用DoModal成员函数
3.在消息列表中就可以选择你需要的消息,双击即可建立消息映射函数
4.在消息映射函数就是:一消息(和一窗口)对应一函数的地址。通过类向导创建。
在MFC中不必再像Win32程序中那样为每个窗口编写消息处理函数。MFC内部封装了处理函数。
下面通过做一个完整的登录对话框来说明MFC消息映射机制。
第一步:创建一个登录对话框,并添加控件,将密码输入的控件的passwd属性置为true。在InitInstance()函数中找到消息映射。
系统默认缺省的消息映射函数:
OnBnClickedOk()对应IDOK
OnBnClickedCancel对应IDCANCEL
OnInitDialog():对话框初始化函数
第二步:双击确认按钮,在生成的函数中添加代码。
void CMFCLoginDlg::OnBnClickedOk()
{
CString user, passwd;
GetDlgItemText(IDC_USER, user);
GetDlgItemText(IDC_PASSWD, passwd);
if (user == "Bangsong" && passwd == "123")
CDialogEx::OnOK();
else
{
AfxMessageBox(L"账号或密码错误!");
}
}
第三步:在InitInstance函数中代码改为如下。其中为了更好的显示登录的效果,另外的添加一个对话框作为主窗口。
BOOL CMFCLoginApp::InitInstance()
{
CMFCLoginDlg dlg;
if (dlg.DoModal() == IDCANCEL)
return FALSE;
CMainDlg maindlg;
maindlg.DoModal();
return FALSE;
}