MFC
文章平均质量分 73
物随心转
子曰:“学而时习之,不亦说乎?”
展开
-
ON_COMMAND和ON_MESSAGE的区别
ON_COMMAND主要用于处理用户界面上的命令消息,例如菜单项、工具栏按钮等。ON_MESSAGE主要用于处理自定义消息,通常用于应用程序特定的通信或自定义行为。根据消息的类型和用途,你可以选择使用适当的宏来建立消息映射,以便正确处理不同类型的消息。ON_COMMAND和ON_MESSAGE的区别_Andrewniu的博客-CSDN博客。原创 2023-09-10 12:14:26 · 874 阅读 · 0 评论 -
BEGIN_MESSAGE_MAP,END_MESSAGE_MAP和ON_COMMAND
在MFC中,消息响应需要BEGIN_MESSAGE_MAP,END_MESSAGE_MAP和ON_COMMAND这些宏,这些宏的定义通常位于afxwin.h头文件中。原创 2023-09-10 12:06:15 · 468 阅读 · 0 评论 -
MFC中的类继承图的基本框架
在类的层次结构中,应用程序类CWinApp是一个基于MFC应用程序的最外层对象容器,它不仅拥有诸如实例句柄等需要被传送到WinMain()函数中去的参数,还包含了应用程序的主框架窗口,当主框架窗口被关闭时,应用程序也就跟着结束了。CView类是在使用文档/视图结构的应用程序中视图对象的基类,它是用户的主要操作界面。从图中可知,在MFC中大多数的类都派生于CObject类,它的主要作用是为子类提供一些基本的功能,这些派生类构成了MFC应用程序的基本框架,它们各自的功能描述如表1所示。包含应用程序的数据集。原创 2023-09-09 10:42:34 · 616 阅读 · 0 评论 -
DECLARE_DYNCREATE(DECLARE_DYNAMIC)与IMPLEMENT_DYNCREATE(IMPLEMENT_DYNAMIC)
主要用于支持RTTI。你可以根据你的需求选择适当的宏组合来满足你的类的需求。看源码,发现这两组宏的实现是有细微差别的,需要配合使用。主要用于支持对象的动态创建和RTTI,而。原创 2023-09-02 11:25:53 · 292 阅读 · 0 评论 -
IMPLEMENT_DYNCREATE的分析
是一个宏(macro),通常与宏一起在MFC(Microsoft Foundation Classes)框架中使用。它的作用是为一个派生自CObject的MFC类提供运行时类型信息(RTTI)和对象的动态创建支持。具体来说,它允许在运行时确定对象的实际类型,这对于对象的类型检查和转换非常有用。你可以使用宏来获取对象的类信息。类可以通过类名字符串在运行时动态创建对象。这对于动态加载类并创建对象的场景非常有用,例如在插件系统中。原创 2023-09-02 11:00:27 · 615 阅读 · 0 评论 -
MFC程序的生存过程
一、MFC的结构一个标准的MFC程序外貌二、 MFC程序的启动与死亡顺序那么 ,现在来经历一个MFC程序的完整生命过程1、创建ApplicationtheApp下图所示,创建一个MFC工程,在MFCApplication1.cpp中有个全局变量CMFCApplication1App theApp;这个全局对象一产生,便执行其构造函数。CWinApp之中的成员变量将因为theApp这个全局对象的诞生而获得配置与初值。2、WinMain登场...原创 2020-07-11 19:22:16 · 376 阅读 · 0 评论 -
宏DECLARE_DYNCREATE与DECLARE_DYNAMIC
一、MSDN的解释启用 CObject对象 --将动态创建的派生类在运行时。DECLARE_DYNCREATE(class_name )目的:使每个CObject的对象在运行的时候具备动态创建的能力,Application Farmework框架利用这种能力来创建对象。 例如,创建的新视图,当您打开新文档。 文档,查看,并且,框架类应支持动态创建,因为框架需要动态创建它们。h ,模块中加入DECLARE_DYNCREATE宏,然后在每个需要访问这个类的对象的 .cpp 文件中包含这个模块.原创 2020-07-11 13:34:17 · 1680 阅读 · 0 评论 -
MFC的.rc 和.rc2文件
一、介绍rc和rc2都是资源文件,包含了应用程序中用到的所有的资源。它们两指向的是同一个资源。两者不同在于:rc2文件中的资源可以直接在VS集成环境中以可视化的方法进行编辑和修改;而rc中的资源是根据需要手工地进行编辑。二、实例工程rc文件#include "resource.h"#define APSTUDIO_READONLY_SYMBOLS//////////////////////////////////////////////////////////////原创 2020-07-08 14:26:57 · 5041 阅读 · 0 评论 -
MFC中PeekMessage与GetMessage的区别
一、PeekMessage与GetMessage的对比相同点:PeekMessage函数与GetMessage函数都用于查看应用程序消息队列,有消息时将队列中的消息派发出去。不同点:GetMessage的主要功能是从消息队列中“取出”消息,消息被取出以后,就从消息队列中将其删除;而PeekMessage的主要功能是“窥视”消息,如果有消息,就返回true,否则返回false。也可以使用PeekMessage从消息队列中取出消息,这要用到它的一个参数(UINT wRemoveMsg),如果设原创 2020-06-15 10:01:10 · 991 阅读 · 0 评论 -
MFC 在父对话框中内嵌子对话框
1、首先创建要在对话框里显示的那个对话框关联一个自定义类CChildDlgOne,设置这个对话框的属性:1)、“Style”选择“Child”;中文版“样式”选择“下层”。2)、“Border”为“None”;中文版“边框”选择“无”。2、关联父窗口—头文件添加成员变量3、指定窗口位置在父窗口中添加pic控件IDC_DEPLOY_AREA,Visible属性去掉,用来指定具体位置在父窗口cpp初始化函数OnInitDialog()添加参考:https://blo原创 2020-06-12 17:42:24 · 992 阅读 · 0 评论 -
MFC的SendMessage与PostMessage的区别
一、定义直接看MSDNSendMessageThis is function sends the specified message to a window or windows.SendMessage calls the window procedure for the specified window anddoes not return until the window procedure has processed the message.The PostMessage func原创 2020-06-11 11:42:04 · 1372 阅读 · 0 评论 -
MFC的序列化(Serialization)
1、定义序列化在面向对象的程序设计中出现的,它基于对象是可以连续的思想,在程序退出或者启动的时候,可以把对象顺序的存储在磁盘或者从磁盘读出,存储和读出对象的过程叫做序列化。2、使用要实现一个能够序列化的类,必须要经过一下几步1.这个类必须间接火直接地由CObject派生而来 2.定义一个不带参数的构造函数 3.在头文件中,必须有如下声明:DECLARE_SERIAL( Your...原创 2020-03-27 15:57:52 · 2019 阅读 · 0 评论 -
MFC的CRuntimeClass分析
一、CRuntimeClass背景介绍MSDN:对于MFC中每个从CObject派生的类来说,都有一个相关的CRuntimeClass结构体,在程序运行时可以访问该结构体来获取对象及其基类的运行时信息。CRuntimeClass是一个结构体,并且其本身并没有基类。在运行时确定一个对象的类型是很重要的,尤其是在做类型检查时;而C++语言本身并不支持运行时类信息。CObject和CRuntim...原创 2020-03-12 11:00:51 · 1945 阅读 · 0 评论 -
MFC创建内存映射文件一
什么是内存映射文件?首先,“映射”这个词,就和数学课上说的一一“映射”,是一个意思,就是建立一种一一对应关系,在这里主要是指硬盘上文件的位置与进程逻辑地址空间中 一块大小相同的区域之间的一一对应。 而内存映射文件,是由一个文件到一块内存的映射。Win32提供了允许应用程序把文件映射到一个进程的函数(CreateFileMapping)。具体到代码就是建立并初始化了相关的数据结...原创 2020-01-17 15:46:04 · 690 阅读 · 0 评论 -
MFC创建内存映射文件二
知道了原理,现在开始编写具体的函数1、首先要通过CreateFile()函数来创建或打开一个文件内核对象,这个对象标识了磁盘上将要用作内存映射文件的文件2、通过CreateFileMapping()函数来创建一个文件映射内核对象以告诉系统文件的尺寸以及访问文件的方式。3、通过MapViewOfFile()函数通过系统管理将文件映射对象的全部或部分映射到进程的地址空间。4、操作文件R...原创 2020-01-17 16:01:32 · 414 阅读 · 0 评论 -
MFC创建内存映射文件示例
该实例是在程序的exe路径下,实现读取,写入内存映射文件功能头文件#ifdef GERNERAL_PRODUCTDATA_EXP#define GERNERAL_PRODUCTDATA_API _declspec(dllexport)#else#define GERNERAL_PRODUCTDATA_API _declspec(dllimport)#endif // GERN...原创 2020-04-04 14:54:45 · 363 阅读 · 0 评论 -
Win32 程序开发流程
1、Windows程序开发流程:首先介绍windows程序开发流程:Windows 程序分为「程序代码」和「UI资源」两大部份,两部份最后以RC编译器整合为一个完整的EXE 文件(图1-1)。所谓UI 资源是指功能菜单、对话框外貌、程序图标、光标形状等等东西。这些UI 资源的实际内容(二进制代码)系借助各种工具产生,并以各种扩展名存在,如.ico、.bmp、.cur 等等。程序员必须在一个所谓...原创 2020-03-10 11:13:08 · 1898 阅读 · 0 评论 -
MFC中消息的使用
1. 怎样使用MFC发送一个消息用MFC发送一个消息的方法是,首先,应获取接收消息的CWnd类对象的指针;然后,调用CWnd的成员函数SendMessage( )。LRESULT Res=pWnd->SendMessage(UINT Msg, WPARAM wParam, LPARAM lParam);pWnd指针指向目标CWnd类对象...原创 2020-01-13 14:23:14 · 363 阅读 · 0 评论 -
MFC自定义消息
1、在.h声明自定义的消息//WM_USER 是用户自定义消息的一个起始值//WM_USER+100 是为了区分系统消息和用户消息,避免冲突#define WU_A WM_USER+100 #define WU_B WM_USER+101 #define WU_C WM_USER+102 #define WU_D WM_USER+103 #define WU_E WM_USER...原创 2019-08-18 20:39:42 · 3160 阅读 · 0 评论 -
MFC的Brush与Pen的使用
Brush的使用void CMFCApplicationDlg::OnBnClickedOk(){ CDC *pDC = GetWindowDC(); CBrush brush1; // Must initialize! brush1.CreateSolidBrush(RGB(0, 0, 255)); // Blue brush...原创 2020-01-02 11:17:47 · 1491 阅读 · 0 评论 -
MFC的SendMessage用法
Cwnd::SendMessage函数将直接调用窗口过程,并且在该窗口处理该消息之前,不会返回。 这与PostMessage成员函数不同,后者将消息放入窗口的消息队列,并立即返回。函数声明:LRESULT SendMessage(UINT message, WPARAM wParam = 0,LPARAM lParam = 0);具体的用法:void CAboutDlg::On...原创 2019-12-31 11:34:02 · 6755 阅读 · 0 评论 -
MFC对文件的操作
BOOL CFileExist::_FileIsExist(CString m_strFullPath){ HANDLE hFile = CreateFile(m_strFullPath, 0, FILE_SHARE_READ, NULL, OPEN_EXISTING, NULL, NULL); //创建或者打开下列对象,返回一个能够访问对象的的句柄(文件名的指针string,访问模式(...原创 2019-09-30 09:39:03 · 246 阅读 · 0 评论 -
MFC获取exe文件的路径
//获得路径 CString strExePath; TCHAR szFilePath[MAX_PATH + 1]; GetModuleFileName(NULL, szFilePath, MAX_PATH); strExePath = szFilePath; unsigned long Length=0; for (int i=1;i<=strExePath.Get...原创 2019-09-28 14:36:55 · 445 阅读 · 0 评论 -
AFX_MANAGE_STATE(AfxGetStaticModuleState())的使用
[MSDN]By default, MFC uses the resource handle of the main application to load the resource template. If you have an exported function in a DLL, such as one that launches a dialog box in the DLL, th...原创 2019-09-23 16:04:17 · 2045 阅读 · 0 评论 -
MFC中使用CBitmap类进行绘图
大家看名字就可以知道,这个类是用来绘制位图的,即以“.bmp”为后缀的图片。一般游戏之中,需要使用的图片比较多,都会将图片先存为文件,然后从文件中读取,而从文件中读取图片的步骤有以下几步:1.建立一个与窗口DC兼容的内存DC我们加载的图片是需要先放在一个内存中的DC里,然后把需要显示的图片从内存DC中绘到窗口DC中即可,我们可以认为内存DC就是一个个备胎,每个DC都是一个屌丝男士,窗口DC就是...转载 2019-08-26 15:21:59 · 3318 阅读 · 0 评论 -
MFC中播放背景音乐
1、添加Lib文件#pragma comment(lib, "Winmm.lib")2、使用mciSendString是用来播放MP3//播放背景音乐 mciSendString(L"open sound\\background.mp3 alias bgm", NULL, 0, NULL); mciSendString(TEXT("play bgm"), NULL, ...原创 2019-08-26 14:08:19 · 1184 阅读 · 0 评论 -
飞机大战中的MFC笔记
1、设置窗体的标题,可以在PlaneWarDoc.cpp文件的OnNewDocument()中设置BOOL CPlaneWarDoc::OnNewDocument(){ if (!CDocument::OnNewDocument()) return FALSE; // TODO: 在此添加重新初始化代码 // (SDI 文档将重用该文档) SetTitle(TEXT("我的飞...原创 2019-08-26 14:02:13 · 374 阅读 · 0 评论