MFC
MFC
醉逍遥_祥
just do IT
展开
-
MFC 类层次结构图
下图表示派生自 MFC 类CObject:下图表示派生自 MFC 类CWnd和CCmdTarget:下图表示不是派生自 MFC 类CObject:层次结构图类别官方下载链接:MFC 层次结构图表中显示下载...原创 2020-03-26 11:40:27 · 633 阅读 · 0 评论 -
AfxEndThread使用不规范导致内存泄露
前言: 最近项目出现了个比较严重的memory leak问题, 因为代码有很久的历史,之前也一直没有发现。最后跟踪定位发现可能是AfxEndThread结束线程导致的。修改了线程结束方式后,问题就解决了。案例:UINT WorkingProc(LPVOID pParam){ CString strFolderPath = _T("..."); AfxEndThread(...原创 2019-04-04 14:16:15 · 1215 阅读 · 1 评论 -
监测指定目录中的文件/目录的改变
简介:资源来自网络转载 // 名称: FileSystemWatcher // 功能: 监测指定目录中的文件/目录的改变 // 环境要求: Requires Windows NT 3.51 SP3 or later, and Unsupported Windows 95/98. // 版权申明...原创 2019-08-08 14:18:04 · 261 阅读 · 0 评论 -
CreateThread,_beginthread,_beginthreadx 区别和扩展知识
================================================================================CreateThread,_beginthread,_beginthreadx 的区别========================================================================...原创 2019-09-12 14:13:25 · 472 阅读 · 0 评论 -
MFC里面ON_COMMAND和ON_MESSAGE、ON_NOTIFY
在MFC应用程序中传输的消息有三种类型:窗口消息、命令消息和控件通知。窗口消息(Window Message)一般与窗口的内部运作有关,如创建窗口、绘制窗口和销毁窗口等。通常,消息是从系统发送到窗口,或从窗口发送到窗口。若需要窗口消息的完全的列表,请参考M F C文档。命令消息:命令消息一般与处理用户请求相关,当用户单击一个菜单项或工具栏时,命令消息产生,并被发送到能处理该请求的类对象...原创 2019-09-12 13:07:56 · 1705 阅读 · 0 评论 -
用HOOK禁用鼠标与键盘事件
//////////////////////////////////////////////////////////////////////////////////////////首先定义HWND g_hWnd; //定义一个窗口的句柄HHOOK g_hMouse; //鼠标的钩子过程HHOOK g_hKeyBoard; //键盘的钩子过程...原创 2019-09-09 14:41:29 · 903 阅读 · 0 评论 -
AllocSysString() && SysFreeString()
CString 对象的 AllocSysString 方法将 CString 转化成 BSTR:CString s;s = ... ; // whateverBSTR bstr = s.AllocSysString();...使用完成以后:SysFreeString(bstr);// 用完释放...原创 2019-08-09 16:21:01 · 2260 阅读 · 0 评论 -
【Visual Studio】error LNK2005: _DllMain@12 already defined
error LNK2005:_DllMain@12already defined in xxx.OBJ解决方案:在工程设置里面,把WIN32,NDEBUG,_WINDOWS,_MBCS,_USRDLL,MSGBOX_EXPORTS,_WINDLL,_AFXDLL中的_USRDLL删除,就可以正确编译了...原创 2019-07-31 17:59:07 · 269 阅读 · 0 评论 -
__stdcall,__cdecl和__fastcall的作用和区别
一、调用约定被以下几个修饰关键字修饰的函数,其参数都是从右向左通过堆栈传递的(__fastcall的前面部分由ecx,edx传),函数调用在返回前要清理堆栈,但由调用者还是被调用者清理不一定。1、__stdcall是Pascal程序的缺省调用方式,通常用于Win32Api中,函数采用从右到左的压栈方式,自己在退出时清空堆栈。VC将函数编译后会在函数名前面加上下划线前缀,在函数名后加上"@...原创 2019-07-30 13:58:14 · 835 阅读 · 0 评论 -
线程池的简单实现
方便以后使用,把之前实现的线程池代码贴出来可能会有一些问题,请自己根据使用情况调整。头文件 ThreadPoolManage.h#pragma once#include <string>#include <vector>#include <algorithm>#include <Windows.h>using namespac...原创 2019-07-11 09:02:39 · 305 阅读 · 0 评论 -
在VC++环境下对文件属性的获取与更改
摘要:本文讲述了在Visual C++ 下编程实现对磁盘文件的属性进行获取以及更改的一般方法,并给出部分相关的关键代码。 一、 引言 文件是数据在磁盘上最常用的一种存放形式,也是在程序设计中与之经常打交道的一种编程对象,不少程序尤其是数据传输和处理类的应用程序更是需要频繁的创建、读取和写入文件。对于一些要求不是很严格的程序,我们往往只关心文件的内容是否正确、文件大小是否有增减或是再严格一些,...原创 2019-07-10 14:17:47 · 713 阅读 · 0 评论 -
判断句柄是否有效的两种方式
判断句柄是否有效句柄相当于一个指向指针的指针,指向指针的指针同样是指针,所以暂且认为它是一个指针,那么CreateFile相当于new 分配一个资源,让这个指针指到这块资源的首地址,那么当CloseHandle(handle)后等于是delete操作。此时handle的值还在,但是资源已被释放掉,那这个时候如果去访问这个句柄,就等于访问一个非法的内存资源。那么现在回到这个问题,如何判断句柄是否...原创 2019-07-10 11:41:20 · 5508 阅读 · 0 评论 -
Windows消息机制
SENDMESSAGE|WM_NULL=0||SENDMESSAGE|WM_CREATE=1|应用程序创建一个窗口|SENDMESSAGE|WM_SIZE=5|改变一个窗口的大小|SENDMESSAGE|WM_ACTIVATE=6|一个窗口被激活或失去激活状态;|SENDMESSAGE|WM_SETFOCUS=7|获得焦点后|SENDMESSAGE|WM_KILLFOCUS=8...原创 2019-06-14 10:19:14 · 520 阅读 · 0 评论 -
MFC 程序启动过程及入口点
每个程序都是从WinMain进入的,只是进入的时候你不知道而已,单步的时候可以看到是从WinMain进入的因为程序是从Main(WinMain)开始。但是在Main(WinMain)开始之前会对全局的变量或者对象进行初始化。故在MFC中,通过通过全局类(theApp)的初始化,进入theApp的构造函数,根据类的规则,初始子类的构造函数,必须先要运行父类的构造函数。在这过程...原创 2019-01-21 09:05:17 · 3634 阅读 · 0 评论 -
SHFileOperation复制文件夹、文件用法
一、函数原型 int SHFileOperation( LPSHFILEOPSTRUCT lpFileOp);二、SHFILEOPSTRUCT结构typedef struct _SHFILEOPSTRUCT {HWND hwnd;//指向发送消息的窗口UINT wFunc;//执行的操作LPCTSTR pFrom;//...原创 2018-05-08 17:21:37 · 5565 阅读 · 3 评论 -
C++创建文件目录(多重文件夹)
平时我们在windows程序中创建文件夹时经常需要判断路径, 有时候甚至需要创建一个路径。因此,我自己封装了一个函数去实现创建目标路径。代码如下:#include<string>#include<windows.h>using namespace std;bool CreateMultipleDirectory(CString szDirectory)...原创 2018-04-25 11:04:27 · 1469 阅读 · 0 评论