nge(CDataExchange* pDX);
CButton m_wndOK;//与ok按钮绑定的控件
CString m_wndEdit1;
};
void CMyDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX,IDOK,m_wndOK);//界面上控件与成员变量绑定
DDX_Text(pDX,IDC_EDIT1,m_wndEdit1);
}
void CMyDlg::OnOK()
{
UpdateData(TRUE);
AfxMessageBox(m_wndEdit1);
//CDialog::OnOK();
//DestroyWindow();
}
void CMyDlg::OnCancel()
{
CDialog::OnCancel();
DestroyWindow();
}
void CMyDlg::PostNcDestroy()
{
CWnd::PostNcDestroy();
delete this;
}
//对话框初始化
BOOL CMyDlg::OnInitDialog()
{
if(!CDialog::OnInitDialog())
{
return FALSE;
}
CWnd* pbtn = GetDlgItem(IDCANCEL);//获取控件
pbtn->EnableWindow(FALSE);//设置为不可用
m_wndOK.MoveWindow(0,0,100,100,TRUE);//操作绑定的成员变量等于操作控件
m_wndOK.SetWindowText("DDX_OK");
m_wndEdit1="123";
UpdateData(FALSE);
return TRUE;
}
class CDlgApp:public CWinApp
{
public:
virtual BOOL InitInstance();
};
CDlgApp theApp;
BOOL CDlgApp::InitInstance()
{
///* 模式对话框
CMyDlg dlg;
m_pMainWnd=&dlg;
dlg.DoModal();//创建和显示模式对话框
//*/
return TRUE;
}
三 实现登录功能
在主窗口显示前,设置登陆对话框,登陆通过了,才显示主窗口:
CDialogLogin dlglogin;
if(IDOK!=dlglogin.DoModal()) return false;
添加控件与值绑定:
Ctrl+w ,选择 member variables 选项卡,添加与控件对应的变量。
登陆对话框处理:
void CDialogLogin::OnOK()
{
UpdateData(TRUE);//更新控件值到变量中
if(m_UserName=="123" && m_UserPwd=="123")//模拟登陆
{
CDialog::OnOK();
}
else
{
AfxMessageBox("用户名或密码错误!");
}
}
示例:
1、创建MFC对话框应用程序
2、添加对话框,ID为IDD_DIALOG_LOGIN,并修改界面控件。
  3、双击对话框标题,选择Create a new class,添加对应的类,类名为 CDialogLogin。
4、ctrl+w添加成员绑定:
5、在app的IninInstance函数中,加入代码:
CDialogLogin dlglogin;
if(IDOK!=dlglogin.DoModal()) return false;
意思是,如果登陆框没有返回IDOK就不显示主框架窗口。
添加点击确定按钮时的消息映射:
//CDialogLogin中实现点击登陆的代码:
void CDialogLogin::OnOK()
{
UpdateData(TRUE);
if(m_UserName=="123" && m_UserPwd=="123")//模拟登陆
{
CDialog::OnOK();//默认关闭对话框,返回IDOK
}
else
{
AfxMessageBox("用户名或密码错误!");
}
}
|