基础问题

情况1:回车键与Esc键默认关闭窗口的一般方法

  1. 方法1 停用OnOK函数,将Ese键的事件改为回车键的事件

    ①先重载OnOK函数 :
    ·窗口类视图的.cpp文件的属性页面
    ·重写图标
    ·Onok
    ·将生成的内容注释掉

void C···Dlg::OnOK()
{// TODO: 在此添加专用代码和/或调用基类//CDialogEx::OnOK();
}

②然后重载PreTranslateMessage函数
把ESC键的消息,用RETURN键的消息替换,这样,按ESC的时候,也会执行刚才的OnOK函数

BOOL C···Dlg::PreTranslateMessage(MSG* pMsg)
{if(pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_ESCAPE)
{pMsg->wParam=VK_RETURN;
//将ESC键的消息替换为回车键的消息,这样,按ESC的时候
//也会去调用OnOK函数,而OnOK什么也不做,这样ESC也被屏蔽
}
return CDialog::PreTranslateMessage(pMsg);
  1. 方法2 过滤Ese键和回车键的激发事件
    直接在重载的PreTranslateMessage函数中屏蔽回车和ESC的消息,和以上方法大同小异:
BOOL C···Dlg::PreTranslateMessage(MSG* pMsg)
{if(pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_ESCAPE) return TRUE;
if(pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_RETURN) return TRUE;
else
return CDialog::PreTranslateMessage(pMsg);
}

知识点:在一般情况下编写的对话框程序,用户在运行的时候,如果不注意按下了ENTER或者ESC键,程序就会立刻退出,之所以会这样,是因为按下Enter键时,Windows就会自动去找输入焦点落在了哪一个按钮上,当获得焦点的按钮的四周将被点线矩形包围。如果所有按钮都没有获得输入焦点,Windows 就会自动去寻找程序或资源所指定的默认按钮(默认按钮边框较粗)。如果对话框没有默认按钮,那么即使对话框中没有OK按钮,OnOK函数也会自动被调用,对于一个普通的对话框程序来说,OnOK函数的调用,以为着程序会立刻退出。为了使Enter键无效,最简单的办法就是将CExDlg的OnOK函数写成空函数,然后针对OK按钮写一个新的函数来响应。ESC键的原理也是如此,它是默认和OnCancel函数映射在一起的。对于ESC键,需要自己重载 CDialog类的PreTranslateMessage函数,当发现是ESC键的时候,过滤掉这个消息或者是替换掉这个消息。 (@一起经历)

情况2:对序号顺延的控件ID进行批量编辑

 icon[0] = AfxGetApp()->LoadIconW(IDI_ICON1);icon[1] = AfxGetApp()->LoadIconW(IDI_ICON2);icon[2] = AfxGetApp()->LoadIconW(IDI_ICON3);icon[3] = AfxGetApp()->LoadIconW(IDI_ICON4);

可使用

for (int i = 0; i <4; i++){icon[i] = AfxGetApp()->LoadIconW(IDI_ICON1+i); }

原因是控件ID可以在Resource.h中看到他的定义,可以当作是int型的

#define IDI_ICON1                       130
#define IDI_ICON2                       131
#define IDI_ICON3                       132
#define IDI_ICON4                       133

Visual Studio 2022 MFC 学习笔记(一):常见问题汇总相关推荐

  1. MFC界面库BCGControlBar v32.1 - 支持Visual Studio 2022

    亲爱的BCGSoft用户,我们非常高兴地宣布BCGControlBar Professional for MFC和BCGSuite for MFC v32.1正式发布!新版本包含对Visual Stu ...

  2. C++ MFC 学习笔记+小型通讯录系统实现

    MFC 最详细入门教程 [MFC常用函数总结](https://www.cnblogs.com/jiu0821/p/4606639.html) [C++ & MFC]https://www.c ...

  3. 手把手教你微软的Visual Studio 2022社区版编程工具安装和使用(图文详解)

    我是荔园微风,作为一名在IT界整整25年的老兵,听闻微软的Visual Studio开发工具已升到2022版,决定来尝试一下,不知道Visual Studio 2022对C/C++现行最新的版本支持力 ...

  4. Visual Studio 2022这些重大更新,影响每一位.NET开发者!

    难得五一长假,蹲家里盘点了一下这2年.NET的发展,可谓日新月异,重现辉煌,各种重磅更新接踵而至: 1 .NET Core3.1各种最受欢迎.性能排行等榜单霸榜,3个月增加100w的关注者: 2 .N ...

  5. 64位Visual Studio 2022,微软在下一盘大棋!

    有没有跟我一样奇怪过,都2021年了,用的还是VS2019?原来微软是憋大招去了,4月18号Amanda的一篇博文宣布了一则重磅消息--Visual Studio 2022 首个预览版将于今年夏季发布 ...

  6. C#,入门教程(04)——Visual Studio 2022 数据编程实例:随机数与组合

    上一篇: C#,入门教程(03)--Visual Studio 2022编写彩色Hello World与动画效果https://blog.csdn.net/beijinghorn/article/de ...

  7. C++计算机视觉库OpenCV在Visual Studio 2022的配置方法

      本文介绍在Visual Studio 2022中配置.编译C++ 计算机视觉库OpenCV的方法. 1 OpenCV库配置   首先,我们进行OpenCV库的下载与安装.作为一个开源的库,我们直接 ...

  8. GitHub原生AI代码生成工具Copilot,官方支持Visual Studio 2022

    来源丨机器之心 编辑丨极市平台 现在,微软.OpenAI.GitHub 三家联合打造的 AI 编程辅助工具 GitHub Copilot 可用于 Visual Studio 2022 了. 去年 6 ...

  9. 微软 Visual Studio 2022 Preview 3 发布

    本文转载自IT之家 IT之家 8 月 13 日消息 时隔近一个月,微软终于发布了 Visual Studio 2022 Preview 3 版本,本次更新带来了关于个人和团队生产力.现代开发和不断创新 ...

  10. Visual Studio 2022如何安装和使用MSDN

    我是荔园微风,作为一名在IT界整整25年的老兵,在后台收到提问,问我Visual Studio 2022如何安装和使用MSDN,这个我之前也没有在这个版本上装过MSDN,我之前是在Visual Stu ...

最新文章

  1. 微服务为什么一定要用docker ?
  2. string之substring的用法
  3. HEOI2016/TJOI2016 字符串问题
  4. 复杂网络社区结构划分方法
  5. 每天一道LeetCode-----摩尔投票法寻找给定数组中出现个数大于n/2或n/3的元素
  6. GL ERROR - after deleteUnusedTextures() glError (0x502)
  7. ASP.NET Core Linux下为 dotnet 创建守护进程(必备知识)
  8. python kmeans聚类 对二维坐标点聚类_Kmeans均值聚类算法原理以及Python如何实现
  9. 阿里数据人标配的高端鼠标垫,我的粉丝每人包邮送一块
  10. docker中使用的镜像加速器可以自己生成
  11. 跟我一起数据挖掘(23)——C4.5
  12. xp3系统登录服务器错误,#印象笔记#Windows XP系统,出现“无法连接服务器”的错误?解决办法!...
  13. 【数据应用案例】用户画像与实践案例
  14. Shel相关编程(四)
  15. 猫加路由加服务器加交换机怎么配置文件,猫和路由器以及交换机的连接方法[图解]...
  16. 知识点 - 后缀数组
  17. 陕西守护星-智慧井口综合安检
  18. 论文精读《Immersive Collaborative Analysis of Network Connectivity: CAVE-style or Head-Mounted Display?》
  19. 【数字电路基础】时序电路和组合电路的区别、为什么要有触发器
  20. sqlserver语法

热门文章

  1. Tensorflow2.0深度学习框架的搭建与环境配置
  2. Windows10 的简单脚本 杀死所有表格程序
  3. 【持续更新】Java序列化对象释疑
  4. 增量式修改检验和(IP, TCP, UDP)算法的研究和实现
  5. WINDOWS2016故障转移群集
  6. php中mbsubstr汉字,php中文字符串截取(mb_substr)实例
  7. java学生信息管理系统代码_java学生信息管理系统源代码
  8. 基于matlab的高等数学,基于matlab的高等数学实验详解.ppt
  9. java添加购物车代码_Java web实现购物车功能的示例代码
  10. Hero传奇引擎47个疑难问题解答