type
status
date
slug
summary
tags
category
icon
password
MFC是基于Windows平台下的对话框开发框架,主要由C++代码编写,安卓ndk 可以编译成安卓平台版本
📝 Windows (消息机制、SDK编程基础) 底层创建窗口
MFC是由微软早期提出来的GUI 的类库框架开发(不支持跨平台) SDK: 软件开发工具包(Soft Development Kit) API函数: Windows 操作系统提供给应用程序编程的接口,都是通过C语言实现的,所有主要的Windows函数都在Windows.h 头文件中进行了声明
(一) 窗口和句柄
窗口是Windows 应用程序非常重要的元素,用于客户交互 一个Windows 程序必须要有一个主窗口
句柄(HANDLE) 是Windows 程序中一个重要的概念,Windows 程序中,有各式各样的资源(窗口、图标、光标、画刷等), 系统在创建这些资源的时候会分配内存,并返回标识这些资源的标识号,即句柄。
(二)消息和消息队列
举例: 鼠标点击后,操作系统拿到点击的消息,放入消息队列(特性:先进后出),应用程序通过 GetMessage() 获取消息,通过DispatchMessage() 分发消息到操作系统,然后操作系统进行窗口过程(回调函数call back)
(三)WinMain函数
当Windows 操作系统启动一个程序时,它调用的就是该程序的WinMain函数(实际是由插入到可执行文件中的启动代码调用的) WinMain 是Windows 程序的入口点函数,与DOS 程序的入口点函数main的作用相同,当WinMain函数结束或返回时,Windows应用程序结束。
(四)一个标准的Win32程序(#include<windows.h>) 实现步骤为
- WinMain函数的定义 2.创建一个窗口 3.进行消息循环 4.编写窗口过程函数
📝 Visual Studio2022 新建windows窗口应用
1.新建 Win32程序
‣
创建项目 选用”桌面向导” 应用程序类型选择”桌面应用程序.exe” -”空项目”
2.程序主入口 WinMain 函数
(1)根据Windows 底层创建一个窗口以及创建消息响应逻辑
CreateWindow 函数参数详解
(2)根据MFC 框架创建窗口以及编写消息响应
MFC.h
MFC.cpp
3.消息映射
消息映射是一个将消息和成员函数 相互关联的表。比如,框架窗口接收到一个鼠标左击消息,MFC将搜索该窗口的消息映射,如果存在一个处理WM_LBUTTONDOWN 消息的处理程序,然后就调用 OnLButtonDown
1.所操作类中,声明消息映射宏
2.通过放置标识消息的宏来执行消息映射,相应的类将在对BEGIN_MESSAGE_MAP 和 END_MESSAGE_MAP 的调用之间处理消息
4.Windows 字符集
一个字符对应一个字节 //多字节
一个字符对应多个字节 //宽字节 Unicode utf-8 1个字符对应3个字节,GBK是1个字符对应 2个字符
Utf-8 是Unicode 的存储方式的不同, 是通用的编码方式
多字节转为宽字节 MessageBox(L”aaa”); Message(Text(”aaa”));
Text 是自适应编码的转换,转化成项目所用的 编码转换格式
5.建立自定义控件
(1)MFC框架代码添加自定义控件
- 添加自定义控件 Custom Control 类
在Custom Control上右键点击 -->ClassWizard-->ClassWizard-->Add Class-->类名CMyControl(以C开头)-->Base class:CWnd。
2.注册自定义控件CMyControl
3.在构造函数调用RegisterWindowClass()、
4.在控件属性中填写当前自定控件的类名
*注意控件的ID不能和其他的重复
- 控件与对话框数据交换 在CMyTestDlg.h中定义一个变量: CMyControl m_control; 在 对话框类的CMyTestDlg.cpp的DoDataExchange函数中添加 DDX_Control(pDX,IDC_CUSTOM1,m_control)。
(2)Windows 底层为窗口创建组件
1.创建按钮
PS: 按钮,文本等控件也属于一个窗口, 需要调用 CreateWindow() 函数创建句柄
第一种方法: 主窗口通过 回调函数中添加 WM_CREATE 信号处理 创建组件。 CreateWindow函数返回之前,我们会收到WM_CREATE消息,我们响应它的号召,艰苦奋斗创建一个按钮
第二种方法: 是在WinMain方法中创建,注意要把CreateWindow函数的hWndParent参数设置为窗口的句柄。
主体窗口创建按钮
- 响应点击按钮后,执行回调函数
WindowProc会收到WM_COMMAND消息,和菜单一样。
wParam:低字节位表示ID号,高字节位表示控件通知,比如用户单击了按钮,通知码为BN_CLICKED,这样我们就可以了解到用户具体对按钮干了什么。
lParam:中保存了控件的句柄。
设置按钮的响应函数
3.MessageBox 和SendMessage 函数详解
有关Notion安装或者使用上的问题,欢迎您在底部评论区留言,一起交流~