Windows编程基础--第5节 MFC对话框程序

标签: mfc windows 对话框
1906人阅读 评论(0) 收藏 举报
分类:

模式对话框


对话框程序是MFC最重要的组成部分,也是Visual C++中唯一可以可视化设计的窗口程序,对话框主要有两类:

  • 模式对话框:必须关闭这个对话框才能继续操作父窗口或者上一级窗口
  • 非模式对话框:不影响父窗口或者上一级窗口,可继续操作父窗口或者上一级窗口,对话框程序也可以一直保留,无需关闭才能执行下一步;

接来下我们先一起学习模式对话框;

1. 新建项目

建立一个MFC的主对话框项目day04,参见上节,添加两个按钮,分别为“关于”,“聊天”,如图所示:
这里写图片描述

2. 添加关于对话框

在资源视图(ResourceView)中Dialog上右击->Insert Diallog,插入对话框,如图所示:
这里写图片描述
这里写图片描述

3. 添加关于对话框类

单击添加的关于对话框,执行View->Class Wizard,或者使用快捷键Ctrl + W打开类向导;
由于新的对话框不存在关联类,此时会提示创建一个与它相关联的类,选择Create a new class,单击OK创建关联类,如下图所示:
这里写图片描述
这里写图片描述
单击OK完成创建关联类;
这里写图片描述

3. 添加关于按钮消息事件

切换回主对话框,单击主对话框,执行View->Class Wizard,或者使用快捷键Ctrl + W打开类向导;选择关于按钮,增加clicked方法,然后Edit Code编辑关于按钮的响应方法,或者可以直接双击“关于”按钮就可以直接进入按钮点击方法,在day04Dlg.h中添加“#include AboutDlg.h”来引入对话框类,然后我们来编辑关于按键方法,创建一个模式对话框;

void CDay04Dlg::OnButtonAbout() 
{
    // TODO: Add your control notification handler code here
    CAboutDlg dlg;
    dlg.DoModal();
}

效果图:
这里写图片描述
至此,一个模式对话框就创建成功了,我们可以看到,我们必须关闭关于对话框,才能单击主对话框。

非模式对话框

现在我们来创建一个非模式对话框;

1. 添加聊天对话框

在资源视图(ResourceView)中Dialog上右击->Insert Diallog,插入对话框,如图所示:
这里写图片描述

2. 添加聊天对话框类

单击添加的关于对话框,执行View->Class Wizard,或者使用快捷键Ctrl + W打开类向导;
由于新的对话框不存在关联类,此时会提示创建一个与它相关联的类,选择Create a new class,单击OK创建关联类,如上面步骤3

3. 添加聊天按钮消息事件

切换回主对话框,单击主对话框,执行View->Class Wizard,或者使用快捷键Ctrl + W打开类向导;选择聊天按钮,增加clicked方法,然后Edit Code编辑关于按钮的响应方法,或者可以直接双击“聊天”按钮就可以直接进入按钮点击方法,在day04Dlg.h中添加“#include “Chat.h””来引入对话框类,然后我们来编辑聊天按键方法,创建一个非模式对话框;

void CDay04Dlg::OnButtonChat() 
{
    // TODO: Add your control notification handler code here
    CChat * pDlg = new CChat;
    pDlg->Create(IDD_DIALOG_CHAT);
    pDlg->ShowWindow(SW_SHOW);
}

效果图:
这里写图片描述
这里写图片描述
至此,一个非模式对话框就创建成功了,我们可以看到,我们打开聊天界面后还可以继续操作父窗口中的关于对话框,甚至还可以单击聊天对话框创建多个聊天界面;
这里写图片描述

项目源码可以访问我的码云

查看评论

Windows编程基础--第8节 MFC对话框控件访问的七种方法(上)

MFC对话框控件具有以下三种访问方式(当然还有很多别的访问方式,今天时间紧急,先学这三种),分别是: 第一种 GetDlgItem()->GetWindowText() GetDl...
  • qq_25549309
  • qq_25549309
  • 2017-10-24 21:51:13
  • 2026

MFC Windows程序设计--对话框,属性表

对话框1.模式 无模式属性表: CPropertySheet,CPropertyPage2.模式对话框创建模式对话框: 1.创建 对话框模板。 2.构造一个 CDialog或派生类对象,封装模...
  • x13262608581
  • x13262608581
  • 2017-04-14 08:04:21
  • 357

Windows程序设计-模态对话框和非模态对话框

对话框分为两类:「模态的」和「非模态的」,其中模态对话框最为普遍。当您的程序显示一个模态对话框时,使用者不能在对话框与同一个程序中的另一个窗口之间进行切换,使用者必须主动结束该对话框,这藉由通过按一下...
  • lilongsy
  • lilongsy
  • 2017-09-14 10:12:12
  • 267

Windows编程与MFC基础

  • 2009年06月05日 13:22
  • 381KB
  • 下载

Windows编程基础 第七章 windows绘图 windows绘图设备

// windows09.cpp : 定义应用程序的入口点。 // #include "windows09.h" #include "stdafx.h" #include "resource.h" #...
  • yangxuefeng09
  • yangxuefeng09
  • 2014-09-04 14:59:10
  • 918

vc++经典实用100实例Windows界面编程之第4章 状态栏与进度条

  • 2010年10月26日 14:42
  • 10.49MB
  • 下载

dubbo 依赖包 javassist 版本异常

最近在用dubbo的main方法启动spring容器时,一直报对象初始换失败 2017-12-09 15:58:19,509|main||ERROR|Main| [DUBBO] Error crea...
  • q394503873
  • q394503873
  • 2017-12-09 16:02:03
  • 45

Windows编程基础学习笔记

Windows编程概述     Windows系统是一个消息驱动的操作系统,每一个事件的发生都会产生一个消息,我们通过消息来知道发生了什么事件。    Windows编程是在实现程序算法的基础上进行窗...
  • lindagod
  • lindagod
  • 2015-02-17 08:28:07
  • 3322

thinkphp5学习入门

一:模块设计 默认采用单模块,支持单模块,所有模块用app作为根命名空间 可以建立common模块,但是不能直接访问,可以在其它模块中访问,提高安全性 common 类可以被任意继承 二 :tp5的配...
  • fei003
  • fei003
  • 2017-06-23 09:40:09
  • 300

C++开发技术实例讲解

  • 2013年02月24日 16:36
  • 1.34MB
  • 下载
    个人资料
    持之以恒
    等级:
    访问量: 4万+
    积分: 711
    排名: 7万+
    文章存档