MFC快速入门

2023-11-02

1、新建-MFC

2、直接进入框图界面

资源文件——rc.——Dialog

3、给控件添加消息处理函数

选中控件——右键——添加事件处理程序——跳转函数,写函数

4、在消息处理函数中添加自定义功能

       在我们使用任意一种方法添加了消息处理函数以后,都只能得到一个空的OnBnClickedAddButton()函数的函数体,要实现我们想要的功能,还需要在函数体中加入自定义功能代码。

       在加法计算器程序中,我们想要“计算”按钮实现的功能是,获取被加数和加数的数值,然后计算它们的和并显示到和的编辑框里。那么,OnBnClickedAddButton()的函数体就应修改为:

void CAdditionDlg::OnClickedAddButton()
{
	// TODO: 在此添加控件通知处理程序代码
 
	// 将各控件中的数据保存到相应的变量   
	UpdateData(TRUE);
 
	// 将被加数和加数的加和赋值给m_editSum   
	m_editSum = m_editSummand + m_editAddend;
 
	// 根据各变量的值更新相应的控件。和的编辑框会显示m_editSum的值   
	UpdateData(FALSE);
}

5、对话框上控件的Tab顺序如何调整。

运行加法计算器程序,显示对话框后不进行任何操作,直接按回车,可以看到对话框退出了。这是因为“退出”按钮是Tab顺序为1的控件,也就是第一个接受用户输入的控件。但是按照我们的输入习惯,应该是被加数的编辑框首先接受用户输入,然后是加数编辑框,再接下来是“计算”按钮,最后才是“退出”按钮。

       先直观的看看各个控件的Tab顺序:打开 “资源视图” ,然后在资源中找到对话框 IDD_ADDITION_DIALOG,双击ID后中间客户区域出现其模板视图。在主菜单中选择 “Format”->"Tab Order",或者按快捷键Ctrl+D,对话框模板上就会显示各个控件的Tab顺序数字。如下图:

       上图中每个控件左上角都有一个数字,这就是它的 Tab 响应顺序。对话框刚打开时输入焦点就在Tab顺序为1的“退出”按钮上,不做任何操作按下Tab键,输入焦点就会转移到Tab顺序为2的“被加数”静态文本框上,但是因为静态文本框不接受任何输入,所以输入焦点继续自动转移到Tab顺序为3的被加数编辑框,再按Tab键,输入焦点又会转移到Tab顺序为4的“加数”静态文本框上,同样由于它是静态文本框,输入焦点不停留继续转移到加数编辑框,后面的控件同理。

       我们认为这个顺序不合理,那怎么修改呢?很简单,从自己认为Tab顺序应该为1的控件开始依次单击,随着单击的完成,各控件的Tab响应顺序也按我们的想法设置好了。

 例如,此例中我们可以依次单击被加数编辑框、“被加数”静态文本框、加数编辑框、“加数”静态文本框、和编辑框、“和”静态文本框、“计算”按钮和“退出”按钮。设置完后如下图:

 

 

最后按ESC键,确认设置并退出对话框模板的Tab顺序设置状态。

       现在我们再运行程序,可以看到对话框打开后最初的输入焦点在被加数编辑框上,然后我们按Tab键,输入焦点移到加数编辑框上,继续多次按Tab键时,输入焦点会按“和编辑框--‘计算’按钮--‘退出’按钮--被加数编辑框--加数编辑框--和编辑框......”的顺序循环转移。这样就达到了我们的目的。

7、弹出对话框函数

弹出对话框比较关键的一个函数,就是对话框类的 DoModal() 函数。CDialog::DoModal() 函数的原型为:

       virtual INT_PTR DoModal();   

       返回值:整数值,指定了传递给CDialog::EndDialog(该函数用于关闭对话框)的nResult参数值。如果函数不能创建对话框,则返回-1;如果出现其它错误,则返回IDABORT。

       调用了它,对话框就会弹出,返回值是退出对话框时所点的按钮的 ID,比如,我们点了“退出”按钮,那么 DoModal 返回值为IDCANCEL。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MFC快速入门 的相关文章

随机推荐

  • 需求:定义一个集合,添加一些学生对象,并进行遍历学生类的属性为:姓名,年龄。

    提示 题目答案均由博主自主编写 想法不一 答案也不一 本答案仅提供参考 如有疑问 可在评论区提问 有时间会解答 Student类 package llf test public class Student private int id pr
  • python中pass语句的作用是什么_Python中pass语句的作用

    在 Python 中 pass 是一个空语句 为了保持程序结构的完整性 一般情况下 pass 不做任何事情 被用作占位符 它的作用如下 1 空语句 do nothing 2 保证格式完整 3 保证语义完整 pass语法格式 pass 如果写
  • 发现一个好用的MySQL数据库管理工具

    免费在线MySQL数据库管理工具 平台地址 http open yesapi cn 一 管理自己的MySQL数据库 如果自己已经有一个MySQL数据库 那么可以直接配置到小白开放平台 就可以实现在线数据库管理了 首先 注册成功后 进入 设置
  • 七种寻址方式

    文章目录 1 立即寻址方式 2 直接寻址方式 3 寄存器寻址方式 4 寄存器间接寻址方式 5 寄存器相对寻址方式 6 基址加变址寻址方式 7 相对基址加变址寻址方式 七种寻址方式总结 寻址方式就是处理器根据指令中给出的地址信息来寻找有效地址
  • Exception in thread "main" java.net.BindException: Address already in use: NET_Bind

    在Java开发Socket中 可能会出现以下信息 Exception in thread main java net BindException Address already in use NET Bind 这是由于端口被占用了 解决的办
  • C++入门(1)简单变量和数据类型

    C 入门 1 简单变量和数据类型 最近在看Larry Ullman Andreas Signer 写的 写给大家看的C 书 做了一些笔记跟大家分享 希望会有所帮助 输入输出头文件 include
  • 编程教育已经走在全球化的路上

    据格物斯坦小坦克所知 在我国 现在仍有很多人觉得编程可有可无 无关考试升学 无关未来与就业 但在国外 编程教育早早便进入校园了 他们对编程的重视程度远超出我们的想象 在国外 少儿编程教育发展程度非常高 全球很多发达国家在基础教育中设立了编程
  • python读取excel生成柱状图

    可以使用 Python 的第三方库来读取 Excel 文件 比如 pandas openpyxl 等 这些库可以方便地将 Excel 中的数据读取出来并存储到一个数据框中 pandas 中的数据结构 然后使用 matplotlib 库来生成
  • 数组16--矩阵中的路径

    数组16 矩阵中的路径 jz65 题目概述 解析 参考答案 注意事项 说明 题目概述 算法说明 请设计一个函数 用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径 路径可以从矩阵中的任意一个格子开始 每一步可以在矩阵中向左 向右 向
  • git分支管理

    git分支管理 1 主分支 Master 主分支 默认不会在该分支上进行开发 只会将稳定没有bug的代码合并到该分支上 2 开发分支 Develop 主要的开发分支 在master分支的基础上创建而来 该分支主要是保持最新的代码 用于测试
  • PHP制作验证码

    学习PHP 它的函数库太强大了 就觉得很神奇 创建验证码也是很有意思 记录一下吧
  • 【数据结构】顺序表---C语言版(数据结构开篇小菜,全网最详细!小白看一遍就学会!!!)

    文章目录 一 前言 1 什么是数据结构 二 顺序表的概念 线性表 1 什么是线性表 2 顺序表与数组的区别 三 顺序表详解 静态顺序表 动态顺序表 创建动态顺序表 接口1 定义结构体SL 接口2 初始化结构体 SLInit 接口3 检查结构
  • 我也谈谈闭包

    我也谈谈闭包 今天第一次在实际运用中遇到闭包的问题 我要给几个视频video增加鼠标悬停自动播放的功能 刚开始时 我只有一个video 代码如下 HTML li li
  • Matlab学习笔记(1)--Matlab基础矩阵运算学习

    最近接触并学习了Matlab 充分感受到了Matlab的强大 正所谓好记忆不如烂笔头 所以在此写一下学习笔记 以便后续温习 因为Matlab是一个十分重实践的软件 所以学习笔记我打算不按照常规写法来进行 而是通过作者在学习中做的练习题来进行
  • webpack5 学习(三)—— 管理资源:加载 images

    在 webpack 5 中 可以使用内置的 Asset Modules 来处理图像资源 webpack config js 修改webpack config js const path require path module exports
  • SoapUI工具---webservice接口(带图详细步骤)

    目录 首先 找一个接口 1 WEB服务 2 WSDL 界面 3 getMobileCodeInfo界面 SoapUI工具调用 1 打开界面 2 添加接口 3 执行接口 4 创建测试用例 5 添加断言 6 运行结果 编辑 首先 找一个接口 1
  • VS2010+opencv msvcprtd.lib(MSVCP90D.dll) : error LNK2005 error LNK2019等错误

    VS 2010 Opencv 遇到了msvcprtd lib MSVCP90D dll error LNK2005 error LNK 2019等多个错误 刚开始没注意 以为是opencv的库添加的有问题 仔细检查了之后发现库添加的没有问题
  • 人工智能学习(五)人工智能三巨头

    他们分别是杰弗里 辛顿 Geoffrey Hinton 约书亚 本吉奥 Yoshua Bengio 和扬 勒丘恩 Yann LeCun 这三个人通常被大众称为 深度学习三巨头 为什么要介绍他们呢 因为人工智能如今能够发展地如此迅猛 他们几个
  • 注意今晚停机更新

    注意今晚停机更新 LOL将在6月13日凌晨1点开始全区停机维护 请注意 6月13日0点将关闭排位赛入口 不会影响正在进行中的排位赛 发布13 12版本 预计停机时间为1 00 12 00 对于在停机期间结束的活动 其实际结束时间也将提前至停
  • MFC快速入门

    1 新建 MFC 2 直接进入框图界面 资源文件 rc Dialog 3 给控件添加消息处理函数 选中控件 右键 添加事件处理程序 跳转函数 写函数 4 在消息处理函数中添加自定义功能 在我们使用任意一种方法添加了消息处理函数以后 都只能得