VisualStudio2010 MFC 对话框之模态对话框和非模态对话框的入门

Windows对话框分为两类:
1>模态对话框:
弹出后,本应用程序其他窗口将不再接受用户输入,只有该对话框响应用户输入,在对它进行相应操作退出后,其他窗口才能继续与用户交互,例如:登录界面。
2>非模态对话框:
弹出后,本程序其他窗口仍能响应用户输入。非模态对话框一般用来显示提示信息等。

IMPLEMENT-模态对话框

新建一个窗口,该窗口用于在主窗口上弹出,实现模态对话框操作;
给该窗口添加一个类,继承父类CDialogEx,派生出CLOGIN(名字自己定);
该模态对话框的内容不再介绍需要添加什么东西,自由发挥;

#include "login.h"//将头文件包含进来,具体看自己定义的是哪个头文件

BOOL CEditDlg::OnInitDialog()
{
    CDialogEx::OnInitDialog();
/*--------------------------------------------------------------------------*/
    INT_PTR nRes;     //用于保存DoModal函数的返回值,方便判断下一步走向?建立?销毁?
    CLOGIN logindlg;  //构造CLOGIN的实例化类
    nRes = logindlg.DoModal();// 弹出对话框,并接收返回值
    if (IDCANCEL == nRes)   //返回值是IDCANCEL,则return ,否则继续向下执行   
    {
       CDialog::EndDialog(0);
       return false;
   }
    //在这里可以新增一些跟对话框相匹配的功能,比如如果logindlg.XXX=??然后怎样
   //else if(logindlg.m_user == L"yujia" &&  logindlg.m_password == L"123456")
   //{
   //	return TRUE; 
   //}
   else			  
   {
       MessageBox(L"提示内容请自行发挥");
       CDialogEx::OnDestroy();
       return false;
   }
/*----------------------------------------------------------------------------*/	
	return TRUE;  
}

上述代码生成的窗口不再接受其余用户的输入,只能在当前窗口操作,除非关闭该窗口。

IMPLEMENT-非模态对话框

//Dlg类的.h文件加进来以下参数
#include "login.h"//将头文件包含进来,具体看自己定义的是哪个头文件
pubilc:
CLOGIN  *dlg;


//Dlg类的.cpp加进来以下参数
//析构函数(显式定义-具体去看析构函数)
CEditDlg::~CEditDlg()
{
	if (NULL != dlg){    
        delete dlg; //删除非模态对话框对象    
    }  
}
//初始化函数,初始化指针
BOOL CEditDlg::OnInitDialog()
{
     CDialogEx::OnInitDialog();
/*----------------------------------------------------------------*/     
     dlg = NULL; //初始化指针
/*----------------------------------------------------------------*/	
     return TRUE; 
}
//找一个按钮、复选框、或者一个消息调出非模态对话框,
void CEditDlg::OnBnClickedButton2()
{
/*----------------------------------------------------------------*/
     if(NULL == dlg)
     {	
     // 创建非模态对话框实例  
       dlg = new CLOGIN();		//new完要用delete删除,此处用析构函数解决
       dlg->Create(IDD_LOGIN,this);
     }
     dlg->ShowWindow(SW_SHOW);
/*-----------------------------------------------------------------*/
}

上述代码生成的窗口可以和你调用该窗口的对话框并行,互不干涉。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CDamogu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值