• mfc模态对话框


    Mfc模态对话框:

    创建模态对话框:

    【模态对话框:具有独占行为,必须由用户完成对当前对话框的响应,才能对本对话框所属的进程进行其他操作】

    例如:

    我们创建一个加法计算器。点击计算之后,弹出一个对话框,当用户点击完确定之后。才进行计算,如果点击取消,则不进行计算。

    把上次那个反复敲几遍就会啦,我本身也是边做博客边在背。写过一遍,就是比较有作用。

    我懒了,就按照上一讲制作的东西接着往下写了。


    以下正文:

    一、界面部分

    经常从下面这四个选项卡来回点点,要不每次我说的是啥你都不知道,,,开始我也不敢点。。。笑哭。。。

    右键Dialog

    点击插入

    2

    发现两点变化:

    1、多出了一个东西,那必须是我们要求创建的对话框了

    2、主要操作界面里面也出了新的对话框界面。

    /*bug2:继昨天的改名风波之后。【不改名,就添加不了变量】这个作为一个提示对话框玲珑一些会比较好。所以我们选中它把它变小。从图像界面的右下角点击那个小黑点儿,往左上方拖拽。

    发现确定没了,然后后来程序的运行就比较诡异了,各种东西的操作也不听使唤了。所以跟紧我。然后如果在看博客运行的同时发现了问题,欢迎评论讨论。

    */

    3、先把确定按钮,往左上方,放放省的被挤没了。

    1)点击确定按钮,进行拖拽。

    2)然后同时进行其他控件的调整。

    3、添加一个静态文本进行提示:是否要进行计算呢?【这个上一讲说过啦,就不再写了】

    4、界面就好啦。

    二、代码链接

    弹出对话框后,如此点击:

    给一个类名,这个名字的来源:c应该是取class的意思,tip提示嘛,dlg对话框的简写。

    人品爆了。。。笑哭

    之前创建之后,在这个IDD_DIALOG1下面都会报错误的。也可能这次着急了没有改id导致没有报错。。。总之这里报错与否都不影响我们继续往下进行。

    有了对应的类,接下来,当我们按下按钮。创建该对象的实例,然后得到当前对话框返回的按钮的值,从而决定是否进行操作。

    所以,上面这句话就是就是算法了,【我眼中的算法,或许可以写点儿什么,或许10年之后当我再次看到这个博文的时候可能感触又不一样了呢。。。那个时候可以再看看人月神话,一定会有新的领悟。】只是算法很简单。几乎不需要思考,所以不用数学对问题进行处理的算法,就是在拿英文写故事。所以这点上来讲,我们编程确实需要一些英文功夫。

    算法的切入点在“当我们按下按钮”。

    然后我们要创建 CTipDlg类型的对象,首先要引入这个对象的头文件。

    #include "TipDlg.h"

    这么一大段话,就是想说,这个包含头文件的操作,应该放在我们双击按钮之后到达的那个cpp文件里面,在当前这篇博客里面他就是MyAdditionComputer.cpp 文件里面。

    然后在上次我们写代码的地方继续这样写:

    //也就是在这个文件里面,加上包含头文件那句话。

    void CMyAdditionComputerDlg::OnBnClickedButton1()

    {

    INT_PTR nRes;//typedef _W64 int INT_PTR   又把__W64 定义成 _W64...笑哭。。。

    CTipDlg tipDlg;//声明一个CTipDlg的对象 tipDlg

    nRes = tipDlg.DoModal();//对象创建模型赋给那个整形指针。

    if (nRes ==IDCANCEL){//整形指针的结果如果是退出

    return;//就返回,对于当前这个按钮按下事件的处理结束。

    }

    //否则 说明点击的是确定,那么继续往下执行。运算并得到结果。

    // TODO:  在此添加控件通知处理程序代码

    UpdateData(true);//见名知意,更新数据。不过它到底是什么呢?双击UpdateData这个单词。按下F12

    //得到下面这样一个函数

    c = a + b;//记得我们之前写的 a b 还有c 嘛,就是他们了,分别指定了int型的变量abc。然后做加法

    UpdateData(false);

    }

    三、运行与结果:

    除了这个框框:

    点击取消:

    不会计算。

    点击确定

    完成计算。

    证明这是个模态窗口,在点击完运算之后,随意的点击这个对话框上面的其他内容,可以看看是不是有响应。

    下面一讲将介绍,非模态窗口,就是当前对话框它弹它的,后面的内容可以继续执行,要怎么做。

  • 相关阅读:
    链接
    列表
    Android Studio AVD 虚拟机 联网 失败
    docker error during connect: Get http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.29/containers/json: open //./pipe/docker_engine: The system cannot find the file specified. In the default daemon configuratio
    JSP Failed to load resource: net::ERR_INCOMPLETE_CHUNKED_ENCODING
    js jsp form
    intellij jsp 中文乱码
    [转载]在Intellij Idea中使用JSTL标签库
    windows pybloomfilter
    docker mysql
  • 原文地址:https://www.cnblogs.com/letben/p/5328316.html
Copyright © 2020-2023  润新知