zoukankan      html  css  js  c++  java
  • mfc非模态对话框

    按照我们的之前的做法,先新建工程。

    把基本的内容都添加上。

    形成这样一个样子:

    并且进行试运行,让程序能够完成加法运算。

    值的注意的是,静态文本那里要改一下名字,否则无法将成员变量进行添加。

    前期准备:

    然后就可以开始做我们的非模态对话框了。


    一、创建这样一个对话框

    到资源视图下面的,找到Dialog右击,出现下拉菜单。点击插入Dialog

    这步,应该都很熟练,先拖动两个按钮(否则可能会发生问题),然后稍微调整对话框的大小,最后添加一个静态文本。输入一些文字。

    二、右键当前对话框,然后找到添加类,这个下拉菜单选项。

    这样起了一个名字:

    C代表类名,immodel大概是非模的意思【笑哭】,dlg对话框。然后点击完成。

    /*

    这里就是前面说的有可能会出现问题,不过,这个无关紧要,保存之后,直接进行下一步就可以了。

    */

    之前我们说,在按钮点下的时候,会触发非模态对话框弹出的事件。

    我们应该如何操作呢?

    逻辑:这段代码应该出现在按钮按下的位置,也就是我们曾经书写UpdateData();c=a+b的地方。在进行计算之前,要弹出对话框。1、创建该类的对象,并显示。这就是算法了。在进行细化:1、创建之前要先询问一下,是不是有必要创建,有的话直接显示,没有在创建并显示。2、为了创建,应该要包含头文件。因为它不属于某个窗体,而是整个进程的。(注意:我们上次创建的模态窗口就只对应那个按钮,所以是局部的。但是我们这次创建的非模窗口是不应该随着响应结束而消亡的。所以他的声明是全局的。所以同时也需要在构造函数进行初始化,在结束时,需要析构)

    具体:

    1、在MFC非模态窗口Dlg.h 中添加两行代码:

    #include “ImmodelDlg.h”

    CImmodelDlg *m_pimmodelDlg;

    2、去构造里面初始化他。

    下面留了一段儿紫色的BEGIN_MESSAGE_MAP可能会比较好定位。

    总之在构造函数中添加完。

    3、就可以去界面显示了

    需要在计算按钮里面添加如下代码:

    if (m_pimmodelDlg == NULL){//判定对话框是否有所指向

    m_pimmodelDlg = new CImmodelDlg();//指向一个非模对话框示例

    m_pimmodelDlg->Create(IDD_DIALOG1, this);//创建

    }

    m_pimmodelDlg->ShowWindow(SW_SHOW);//显示

    如图:

    运行效果:

    样子是有了,但是需要析构析构!!!

    这很重要。

    在这段代码的下面添加如下代码:

    CMFC非模态窗口Dlg::~CMFC非模态窗口Dlg(){

    if (m_pimmodelDlg != NULL){

    delete m_pimmodelDlg;

    m_pimmodelDlg = NULL;

    }

    }

    如图:

    如此非模态对话框的创建也完成了。

    参考网站:

    http://www.jizhuomi.com/school/c/161.html

  • 相关阅读:
    随机的爱
    在使用ASP.NET时进行页面重定向的3种方法。(转)
    [程序员必看]请不要做浮躁的人
    C# datetime 操作
    心碎的浪漫
    动网论坛 企业版

    内存映射文件(File Mapping)API
    内存映射文件
    已知进程句柄,如何知道此进程的主窗口句柄
  • 原文地址:https://www.cnblogs.com/letben/p/5328334.html
Copyright © 2011-2022 走看看