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消息映射机制