MFC基于对话框-常用控件及其使用

目录

  • 对话框
    • 模态对话框
    • 非模态对话框
  • 编辑框

对话框

模态对话框

模态对话框:当从上一级对话框弹出这个模态对话框过后,之后只能在这个对话框进行操作,其它对话框操作(包括鼠标点击等)不了

如何弹出一个模态对话框?

  1. 在资源文件的.rc2文件下的Dialog文件夹处右键单击,选择插入Dialog
    MFC基于对话框-常用控件及其使用_第1张图片
    我们将新插入的对话框的ID改为IDD_DIALOG_EXEC

  2. 给新插入的对话框添加一个类,右键单击,选择新建类
    MFC基于对话框-常用控件及其使用_第2张图片

将添加的类命名为DlgEXEC,其余默认,点击确定
3. 给初始对话框从工具箱里添加两个按钮,命名为“模态对话框”和“非模态对话框”,我们的目的是,单击按钮会弹出一个对应类型的对话框
MFC基于对话框-常用控件及其使用_第3张图片

  1. 右键单击第一个按钮,选择“添加事件处理程序”;消息类型选择“BN_CLICKED”(意为鼠标单击),函数名改为“OnBnClickedButton1”,点击确定,则会出现与该按钮绑定的一个函数。(整个步骤可以通过双击“模态对话框”按钮实现)
    MFC基于对话框-常用控件及其使用_第4张图片
  2. 在该cpp文件顶部包含“DlgEXEC.h”,在OnBnClickedButton1()函数里新建一个DlgEXEC的变量dlg , 使用函数dlg.DoModal().
    MFC基于对话框-常用控件及其使用_第5张图片
    6.函数写好后,f5编译并运行,点击“模态对话框”,弹出一个模态对话框,并且操作不了上一个对话框。
    MFC基于对话框-常用控件及其使用_第6张图片

非模态对话框

非模态对话框:当从上一级对话框弹出这个非模态对话框过后,之后可以在这个对话框进行操作,也可以在其它对话框进行操作

如何弹出一个非模态对话框?(该案例和模态对话框的案例同时进行)

  1. 插入一个Dialog,ID命名为IDD_DIALOG_SHOW;

  2. 给该对话框新建类,类名为DlgSHOW;

  3. 给按钮“非模态对话框”添加一个事项处理程序
    MFC基于对话框-常用控件及其使用_第7张图片

  4. 由于其中的Dlg是个局部变量,函数调用完就会被释放,故编译运行时,该非模态对话框会一闪而过;(由于模态对话框会有阻塞机制,不会一闪而过,二回继续等待消息);所以我们把类型为DlgSHOW的Dlg创建在CMFCApplicationDLGDlg类里面。
    MFC基于对话框-常用控件及其使用_第8张图片

  5. 编译运行,弹出了一个非模态对话框,并未一闪而过;但我们再次点击“非模态对话框”时,程序崩溃了。原因是.Creat()函数只能调用一次,运行多次会崩溃,故我们把这个函数移到OnBnClickedButton2()的外面,放进BOOL CMFCApplicationDLGDlg::OnInitDialog()这个函数里面,让主对话框初始化的时候就调用Dlg.Creat(IDD_DIALOG_SHOW);至此,OnBnClickedButton2()里就留一个Dlg.ShowWindow(SW_NORMAL);
    MFC基于对话框-常用控件及其使用_第9张图片
    MFC基于对话框-常用控件及其使用_第10张图片

  6. 编译运行,点击“非模态对话框”按钮,弹出了非模态对话框,且“非模态对话框”按钮可以重复点击。

编辑框

待更新…

你可能感兴趣的:(笔记,c++,mfc)