![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MFC
文章平均质量分 60
小飞侠hello
这个作者很懒,什么都没留下…
展开
-
NSIS 安装windows 安装包(包括QT和MFC)
Function<函数名>FunctionEn用户自定义函数仅当是Call指令调用时才被执行。原创 2024-01-09 09:27:10 · 1187 阅读 · 0 评论 -
MFC程序通过命令行窗口输出cout等语句
在MFC项目上右键->属性如下图所示:配置属性->生成事件->后期生成事件命令行:输入editbin /SUBSYSTEM:CONSOLE $(OUTDIR)\ProjectName.exe(其中 ProjectName.exe为自己的可执行文件名称)之后便可以在命令行窗口输出cout语句内容。————————————————版权声明:本文为CSDN博主「Mr2021」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:h.原创 2022-03-09 10:12:09 · 407 阅读 · 0 评论 -
c++ 文件操作方式
1.使用标准C运行库函数,包括fopen、fclose、fseek、fwrite、fread、fprintf等.需要FILE *fopen(const char *filename, const char *mode);ilename-- 这是 C 字符串,包含了要打开的文件名称。 mode-- 这是 C 字符串,包含了文件访问模式 "r" 打开一个用于读取的文件。该文件必须存在。 "w" 创建一个用于写入的空文件。如果文件名称与已存在的文件相同,则会删除..原创 2021-12-06 17:01:33 · 2844 阅读 · 0 评论 -
vs的运行库 MT MTd MD MDd区别
MT:mutithread,多线程库,编译器会从运行时库里面选择多线程静态连接库来解释程序中的代码,即连接LIBCMT.lib库MTd:mutithread+debug,多线程调试版,连接LIBMITD.lib库MD:MT+DLL,多线程动态库,连接MSVCRT.lib库,这是个导入库,对应动态库为MSVCRT.dllMDd:MT+DLL+debug,多线程动态调试库,连接MSVCRTD.lib库,对应动态库为MSVCRTD.dll修改地方是:“项目 -> C/C++ ->代码.原创 2021-12-06 09:54:21 · 4097 阅读 · 0 评论 -
windows 下 c++ 各字符(char、wchar_t、string、cstring)的转换
c_str()和data()区别是:前者返回带'/0'的字符串,后者则返回不带'/0'的字符串.好像在c++11两者没有区别了std::string、std::wstring的关系①:std::string内部是char单字节字符②:std::wstring内部是WCHAR宽字符,即wchar_t在MFC的工程中我们可以设置工程的编码属性:①:对于UNICODE的编码属性CString被定义为CStringW,其内部是WCHAR宽字符 即wchar_t②:对于多字节的编码属性CString.原创 2021-10-14 16:28:35 · 2206 阅读 · 0 评论 -
vs 执行单个文件,如cpp
1.只执行一个cpp 的快捷方式 ctrl + F72.只执行部分文件如.h,.cpp .处理不需要编译的文件。选中不需要编译的头文件或源文件,右键属性-> 从选中排除 设置为是 即可。原创 2021-07-21 17:33:59 · 10619 阅读 · 3 评论 -
vs 配置 .pdb
配置生成位置:当前工程右键属性 -> 配置属性 -> 链接器 -> 调试右边 生成调试信息 选择是生成程序数据库文件 选择刚才pdb目录+生成pdb文件名配置加载pdb位置:vs菜单栏 工具->选项->调试->符号然后在右边添加pdb目录路径就可以了...原创 2021-07-01 15:56:15 · 1987 阅读 · 0 评论 -
手把手分析 mfc 程序创建 代码执行流程
程序流程1.先全局变量theapp;2.AfxWinMain,包括执行InitApplication、InitInstance(一般会重写)、Run3.在InitInstance 会create 窗口,通过LoadFrame(多文档,只创建CMDIFrameWnd,至于cdoc、CMDIChildWnd、cview是执行ProcessShellCommand创建的)或者 ProcessShellCommand(单文档,同时创建cdoc、cframe、cview)。‘’其实多文档也执行Proc原创 2021-06-21 16:29:56 · 662 阅读 · 0 评论 -
cstring 的GetBuffer() 和 ReleaseBuffer()
对一个CString变量,你可以使用的唯一合法转换符是LPCTSTR,直接转换成非常量指针(LPTSTR-[const] char*)是错误的。正确的得到一个指向缓冲区的非常量指针的方法是调用GetBuffer()方法。GetBuffer()主要作用是将字符串的缓冲区长度锁定,releaseBuffer则是解除锁定。GetBuffer可以获得一个字符数组让你能够方便的对其进行操作,调用GetBuffer以后必须调用ReleaseBuffer释放,否则不能对该CString对象进行操作需要在GetBuf原创 2021-06-04 10:10:54 · 969 阅读 · 2 评论 -
拆分窗口
MDI 3层窗口结构1. mdi frame 窗口:以wm_create 消息的方式建立client 窗口,2. mdi client窗口:3.mdi child窗口把拆分窗口csplitterwnd当成 mdi client。具体操作:让新增一个类,派生自cmdichildwnd,并让它拥有一个csplitterwnd对象,然后改写该类的oncreateclient虚函数。在该虚函数中调用csplitterwnd::create产生拆分窗口。...原创 2021-04-12 19:55:52 · 97 阅读 · 0 评论 -
设备坐标和逻辑坐标
设备坐标(DeviceCoordinate)又称为物理坐标(PhysicalCoordinate),是指输出设备上的坐标。又称视口坐标。通常将屏幕上的设备坐标称为屏幕坐标。设备坐标用对象距离窗口左上角的水平距离和垂直距离来指定对象的位置,是以像素为单位来表示的,设备坐标的X轴向右为正,Y轴向下为正,坐标原点位于窗口的左上角。逻辑坐标(LogicalCoordinate)是系统用作记录的坐标。又称窗口坐标。在缺省的模式(MM_TEXT)下,逻辑坐标的方向和单位与设备坐标的方向和单位相同,也是以像素为...原创 2021-04-12 09:33:52 · 953 阅读 · 0 评论 -
mfc 对话框
对话框数据交换和校验交换:DDX(dialog data exchange) DDX_control、ddx_text校验:DDV(dialog data validation)另外还有DDP(ocx 中用到的)dodataexchange 由一组组ddx,ddv组成。先ddx,再ddv.做出modal(模态)对话框,调用DoModal函数即可。...原创 2021-04-09 14:42:34 · 90 阅读 · 0 评论 -
carray 、clist、cmap
array:数组,添加移动整个内存,所以慢。查找快,可以下标索引查找。list:双向链表,添加快,查找慢,无索引,只能通过GetNext等方式进行访问。map:键值的方式 key -value这三个数据类型都是派生自cobject。因此都具备文件读写、运行时类型识别、动态创建等性质。延伸:1.ob 表示派生自cobject的任何对象,cobarray、 coblist ==>> CArray模板可以记录任何形式的对象,而CObArr...原创 2021-04-01 13:35:35 · 544 阅读 · 0 评论 -
HOOK(钩子,挂钩)
HOOK(钩子,挂钩)是一种实现Windows平台下类似于中断的机制。HOOK机制允许应用程序拦截并处理Windows消息或指定事件,当指定的消息发出后,HOOK程序就可以在消息到达目标窗口之前将其捕获,从而得到对消息的控制权,进而可以对该消息进行处理或修改,加入我们所需的功能。钩子按使用范围分,可分为线程钩子和系统钩子,其中,系统钩子具有相当大的功能,几乎可以实现对所有Windows消息的拦截、处理和监控。这项技术涉及到两个重要的API,一个是SetWindowsHookEx,安装钩子;另一个是U原创 2021-03-30 13:42:42 · 1047 阅读 · 0 评论 -
mfc 类图
1.原创 2021-03-26 14:02:16 · 511 阅读 · 0 评论 -
深入浅出MFC之6大技术 消息映射( DECLARE_MESSAGE_MAP) 和命令传递 ON_NOTIFY ON_COMMAND ON_MESSAGE 三大难点解析
ON_COMMAND用来响应相应工具栏和菜单栏的命令WM_COMMAND,不用自己解开WM_COMMAND中wParam和lParam中传送的控件ID。ON_COMMAND对应的消息ID一直都是WM_COMMAND.操作方法:在类向导中,命令tab页 对象id为选择需要的控件ID,消息为command.然后添加处理程序。相当于在在头文件添加了 afx_msg void func(); ...原创 2020-04-03 15:26:54 · 2379 阅读 · 0 评论 -
深入浅出mfc 运行时类型识别(RTTI 、DECLARE_DYNAMIC)、动态创建( DCLARE_DYNCREATE)、永久保存(DECLARE_SERIAL)
只有用DECLARE_DYNAMIC,DECLARE_DYNCREATE或DECLARE_SERIAL定义的CObject的派生类才能返回CRuntimeClass结构指针。4. 程序的模块状态中有所有的RuntimeClass的列表,因此,查找对应的程序支持的RuntimeClass(对比ClassName),获得对应的RuntimeClass;//初始化一个名为"_init_##class_name"的AFX_CLASSINIT静态结构,主要作用是给指定的class_name的。原创 2020-12-11 11:04:31 · 889 阅读 · 0 评论 -
MFC 之序列化 serialize 和CArchive
必须为希望串行化的每个类覆盖Serialize。被覆盖的Serialize首先必须调用基类的Serialize函数。在类的声明中必须使用DECLARE_SERIAL宏,并且在类的执行过程中也必须使用IMPLEMENT_SERIAL宏。使用CArchive::IsLoading或CArchive::IsStoring函数,用于决定是否装载或存储了档案文件。步骤是1.必须在创建一个CArchive对象之前,创建一个CFile对象。2.创建CArchive对象,要把它附加给表示一个打开文.原创 2021-01-13 15:24:22 · 877 阅读 · 0 评论 -
深入浅出MFC 6大关键技术之仿真 mfc程序初始化过程
1.c++规定,全局对象的建构将比程序进入点(即main或者winmain)更早,所以theapp的构造函数将更早于mian或winmain.2.原创 2021-01-12 08:28:12 · 183 阅读 · 0 评论 -
深入浅出MFC - C++ 重要性质
1.this指针成员函数有一个隐藏参数,名为this 指针。this 在编译期间出现。2. A a;基类 B b; 子类 。 A *p = &b; //多态的既可以通用基类的指针调用子类对象的方法 p->Func(); //调用的是B类对象的函数。 如果Func不是虚函数,调用的是A类对象的函数. 说明:在无虚函数的情况下,基类和派生类都定义相同名称的成员函数,那么通过对象指针调用成...原创 2020-12-23 09:57:02 · 142 阅读 · 0 评论 -
TranslateMessage 和 DispatchMessage
TranslateMessage(&msg);TranslateMessage是用来把快捷键消息转换为字符消息,并将转换后的新消息投递到调用线程的消息队列中。由于Windows对所有键盘编码都是采用虚拟键的定义,这样当按键按下时,并不得字符消息,需要键盘映射转换为字符的消息。字符消息被投递到调用线程的消息队列中,当下一次调用GetMessage函数时被取出。...原创 2020-12-18 15:44:00 · 614 阅读 · 1 评论 -
深入浅出 MFC -WIN32基本概念
windows程序进入点是winmain1.注册窗口registerclass注册窗口类,大型结构wndclass中有 wndproc ,也就是所谓的窗口函数。窗口只需注册一次,即initapplication只执行一次,即第一个实例执行,其他后面同一程序不需要执行。原因所有进程同在一个地址上。2.创建窗口。使用createwindows函数操作。在initInstance函数中执行,每一个实例都执行该函数。mfc 已经把initapplication和initInstance 封装成wina原创 2020-12-21 10:37:58 · 336 阅读 · 0 评论 -
WM_CLOSE、WM_DESTROY、WM_QUIT区别
WM_CLOSE、WM_DESTROY、WM_QUIT区别WM_CLOSE:关闭应用程序窗口WM_DESTROY:关闭应用程序WM_QUIT:关闭消息循环只有关闭了消息循环,应用程序的进程才真正退出(在任务管理器里消失)。点击窗口右上角的关闭按钮,或选择【File/Close】,发出 WM_CLOSE消息。CMyFrameWnd 并没有设置WM_CLOSE 处理常式,于是交给预设之处理常式即缺省窗口函数defwindoeproc。预设函数对于WM_CLOSE 的处理方式是呼叫 ::Des原创 2020-12-21 16:18:00 · 421 阅读 · 1 评论