当前位置: 首页 > article >正文

C++打造局域网聊天室第四课: 动态启用或禁用窗口及MFC消息映射机制

文章目录

  • 前言
  • 一、在工程中动态开启或关闭Unicode编码
  • 二、如何发布写好的程序
  • 三、动态启用或禁用窗口
  • 四、MFC的消息映射机制
  • 总结


前言

C++打造局域网聊天室第四课: 动态启用或禁用窗口及MFC消息映射机制


一、在工程中动态开启或关闭Unicode编码

在解决方案资源管理器中右键工程,点击属性。
在这里插入图片描述
在常规-字符集下可以看到
在这里插入图片描述
可以通过选择未设置来关闭Unicode编码,选择未设置后重新编译即可
在这里插入图片描述

二、如何发布写好的程序

在写程序时使用Debug,这时产生的.exe文件较大,发布时选择Release,此时产生的.exe较小
在这里插入图片描述在同样的程序,Debug下产生的.exe较大
在这里插入图片描述
Release下产生的.exe较小
在这里插入图片描述

三、动态启用或禁用窗口

说明:窗口时广泛意义上的,任何一个控件都可以称为一个窗口。主要用到的函数:BOOL EnableWindow(BOOL bEnable = True),该函数可以设置控件的启用和禁用状态。
同时需要用到一些函数进行辅助:CWnd* GetDlgItem(int nID),用于取得某一个控件窗口的指针。
HWND GetSafeHwnd(),用于获取某一个控件窗口的句柄。
设置客户端停止控件禁用的代码如下:
在这里插入图片描述
首先利用函数GetDlgItem(int nID)获取该控件对象的指针,再调用成员函数EnableWindow将其设置为0,即flase,则设置禁用成功
在这里插入图片描述
但是该方法需要禁用多个控件时需要逐一编写程序,较为繁琐,这里我们采用另一种方法,重新封装一个函数。首先在chartroomDlg.h头文件中声明函数,我们这里同样将函数命名为EnableWindow,通过函数重载机制调用我们的函数。
在这里插入图片描述
接下来在chartroomDlg.cpp源文件中实现函数。
在这里插入图片描述
调用我们自己写的函数进行动态启用或禁用窗口
在这里插入图片描述

四、MFC的消息映射机制

右键服务器选项,点击添加时间处理程序
在这里插入图片描述
选择BN_CLICKED,即单机动作消息类型,并在类列表下选择类,如下图,后点击确定
在这里插入图片描述
可以看到在头文件chartroomDlg.h中自动为我们声明了该函数
在这里插入图片描述
并在源文件chartroomDlg.cpp中为我们自动写出了该函数的实现框架
在这里插入图片描述
先测试一下该函数是否可用
在这里插入图片描述
点击服务器选项弹出提示框,说明上述操作可行
在这里插入图片描述
MFC的消息映射机制即为MFC如何将用户的鼠标单机等操作与控件联系在一起
可以在BEGIN_MESSAGE_MAP中找到上述操作自动添加的代码(注意:这行代码是自动所生成的,不是人为添加的)
在这里插入图片描述
即所有对ID为IDC_RADIO2控件的单机操作都会执行函数OnBnClickedRadio2


总结

C++打造局域网聊天室第四课: 动态启用或禁用窗口及MFC消息映射机制


http://www.kler.cn/a/428529.html

相关文章:

  • 白玉微瑕:闲谈 SwiftUI 过渡(Transition)动画的“口是心非”(下)
  • 75,【7】BUUCTF WEB [Weblogic]SSRF(未作出)
  • 25/1/22 算法笔记<ROS2> TF变换
  • qml Timer详解
  • [Dialog屏幕开发] 屏幕绘制(文本/输入框/按钮控件)
  • 大华大数据开发面试题及参考答案
  • QT 中 QString 转换为 Unicode 和 ASCII 的方法
  • 【JavaEE 初阶】⽹络编程套接字
  • 【Linux】Git
  • 运输层4——TCP格式(重点!)
  • 24/12/8 算法笔记<强化学习> AC:actor-critic
  • 安装部署PowerDNS--实现内网DNS解析
  • AI视频玩法:动物融合技术解析
  • 智驾端到端时代,何以「奔驰」?
  • 图神经网络代码学习—基本使用与分类任务
  • JWT 原理与使用
  • 高阶数据结构--B树B+树实现原理B树模拟实现--Java
  • Arthas采集火焰图
  • esp-idf基于vscode插件开发环境搭建
  • 【数电】常见时序逻辑电路设计和分析
  • 纯虚函数和抽象类
  • 使用Jackson忽略特定字段的序列化
  • 【Windows11系统局域网共享文件数据】
  • idea中手动停止后selenium UI自动化打开的浏览器及chromedriver进程就会一直在后台中,使用钩子程序保证在程序结束时一定会进行退出。
  • 【机械加工】数字化软件打造,如何实现3D交互可视化?
  • 麦肯锡报告 | 2023年科技趋势采纳水平:成熟技术与新兴技术的平衡发展