Windows编程
Windows编程
醉逍遥_祥
just do IT
展开
-
MFC 类层次结构图
下图表示派生自 MFC 类CObject:下图表示派生自 MFC 类CWnd和CCmdTarget:下图表示不是派生自 MFC 类CObject:层次结构图类别官方下载链接:MFC 层次结构图表中显示下载...原创 2020-03-26 11:40:27 · 633 阅读 · 0 评论 -
在 Visual Studio 中使用 C# 创建 Windows 窗体应用
在此 Visual Studio 集成开发环境 (IDE) 简介中,了解如何创建具有基于 Windows 的用户界面 (UI) 的简单 C# 应用程序。创建项目首先,创建 C# 应用程序项目。项目类型随附了所需的全部模板文件,无需添加任何内容。打开 Visual Studio 2019。 在“开始”窗口上,选择“创建新项目” 。 在“创建新项目” 窗口中,为 C# 选择“Wind...原创 2020-03-20 11:19:17 · 14372 阅读 · 0 评论 -
【.Net开发】之使用 C# 创建简单WPF应用
前言以下内容翻译自微软官方文档链接:https://docs.microsoft.com/zh-cn/visualstudio/get-started/csharp/tutorial-wpf?toc=%2Fdotnet%2Fdesktop-wpf%2Ftoc.json&bc=%2Fdotnet%2Fbreadcrumb%2Ftoc.json&view=vs-2019通过...原创 2020-03-12 16:06:05 · 3597 阅读 · 2 评论 -
【C/C++笔记】之关键词typedef
#if defined(_WIN64) typedef __int64 INT_PTR, *PINT_PTR; typedef unsigned __int64 UINT_PTR, *PUINT_PTR; typedef __int64 LONG_PTR, *PLONG_PTR; typedef unsigned __int64 ULONG_PTR, *PULON...原创 2019-10-12 10:02:50 · 712 阅读 · 1 评论 -
AfxEndThread使用不规范导致内存泄露
前言: 最近项目出现了个比较严重的memory leak问题, 因为代码有很久的历史,之前也一直没有发现。最后跟踪定位发现可能是AfxEndThread结束线程导致的。修改了线程结束方式后,问题就解决了。案例:UINT WorkingProc(LPVOID pParam){ CString strFolderPath = _T("..."); AfxEndThread(...原创 2019-04-04 14:16:15 · 1215 阅读 · 1 评论 -
Windows进程间通信之共享内存
1.共享内存介绍共享内存指 (shared memory)在多处理器的计算机系统中,可以被不同中央处理器(CPU)访问的大容量内存。由于多个CPU需要快速访问存储器,这样就要对存储器进行缓存(Cache)。任何一个缓存的数据被更新后,由于其他处理器也可能要存取,共享内存就需要立即更新,否则不同的处理器可能用到不同的数据。共享内存是 Unix下的多进程之间的通信方法 ,这种方法通常用于一个程序的...原创 2018-08-20 16:58:20 · 1800 阅读 · 0 评论 -
MFC 程序启动过程及入口点
每个程序都是从WinMain进入的,只是进入的时候你不知道而已,单步的时候可以看到是从WinMain进入的因为程序是从Main(WinMain)开始。但是在Main(WinMain)开始之前会对全局的变量或者对象进行初始化。故在MFC中,通过通过全局类(theApp)的初始化,进入theApp的构造函数,根据类的规则,初始子类的构造函数,必须先要运行父类的构造函数。在这过程...原创 2019-01-21 09:05:17 · 3629 阅读 · 0 评论 -
SHFileOperation复制文件夹、文件用法
一、函数原型 int SHFileOperation( LPSHFILEOPSTRUCT lpFileOp);二、SHFILEOPSTRUCT结构typedef struct _SHFILEOPSTRUCT {HWND hwnd;//指向发送消息的窗口UINT wFunc;//执行的操作LPCTSTR pFrom;//...原创 2018-05-08 17:21:37 · 5562 阅读 · 3 评论 -
监测指定目录中的文件/目录的改变
简介:资源来自网络转载 // 名称: FileSystemWatcher // 功能: 监测指定目录中的文件/目录的改变 // 环境要求: Requires Windows NT 3.51 SP3 or later, and Unsupported Windows 95/98. // 版权申明...原创 2019-08-08 14:18:04 · 261 阅读 · 0 评论 -
在VC++环境下对文件属性的获取与更改
摘要:本文讲述了在Visual C++ 下编程实现对磁盘文件的属性进行获取以及更改的一般方法,并给出部分相关的关键代码。 一、 引言 文件是数据在磁盘上最常用的一种存放形式,也是在程序设计中与之经常打交道的一种编程对象,不少程序尤其是数据传输和处理类的应用程序更是需要频繁的创建、读取和写入文件。对于一些要求不是很严格的程序,我们往往只关心文件的内容是否正确、文件大小是否有增减或是再严格一些,...原创 2019-07-10 14:17:47 · 713 阅读 · 0 评论 -
__stdcall,__cdecl和__fastcall的作用和区别
一、调用约定被以下几个修饰关键字修饰的函数,其参数都是从右向左通过堆栈传递的(__fastcall的前面部分由ecx,edx传),函数调用在返回前要清理堆栈,但由调用者还是被调用者清理不一定。1、__stdcall是Pascal程序的缺省调用方式,通常用于Win32Api中,函数采用从右到左的压栈方式,自己在退出时清空堆栈。VC将函数编译后会在函数名前面加上下划线前缀,在函数名后加上"@...原创 2019-07-30 13:58:14 · 835 阅读 · 0 评论 -
C++创建文件目录(多重文件夹)
平时我们在windows程序中创建文件夹时经常需要判断路径, 有时候甚至需要创建一个路径。因此,我自己封装了一个函数去实现创建目标路径。代码如下:#include<string>#include<windows.h>using namespace std;bool CreateMultipleDirectory(CString szDirectory)...原创 2018-04-25 11:04:27 · 1468 阅读 · 0 评论 -
CreateThread,_beginthread,_beginthreadx 区别和扩展知识
================================================================================CreateThread,_beginthread,_beginthreadx 的区别========================================================================...原创 2019-09-12 14:13:25 · 472 阅读 · 0 评论 -
【C/C++笔记】之TerminateThread函数结束线程的危险性
一、TerminateThread强烈不建议使用,因为这个函数的执行是异步的,你无法保证调用之后会立即退出,同时线程的堆栈均不会被销毁,而导致内存泄露。如果调用了这个函数,请确保使用WaitForSingleObject来等待线程对象的结束。能使用TerminateThread结束线程的地方: 线程函数简单,只做简单数据处理不涉及资源分配,无动态对象。但还是需要慎用。参考链接:https...原创 2019-09-24 14:52:51 · 1167 阅读 · 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 评论 -
线程池的简单实现
方便以后使用,把之前实现的线程池代码贴出来可能会有一些问题,请自己根据使用情况调整。头文件 ThreadPoolManage.h#pragma once#include <string>#include <vector>#include <algorithm>#include <Windows.h>using namespac...原创 2019-07-11 09:02:39 · 305 阅读 · 0 评论 -
Windows驱动程序框架
一、驱动程序框架介绍很多人都用过VC++等图形集成开发环境(IDE)开发过Windows应用程序,当用集成开发环境生成一个工程时,会自动生成一个预先定义好的命令行,这个命令行包含了编译器(compiler)和连接器(linker)某些缺省的配置。很多习惯于图形集成开发环境的人可能对此并不了解。你可能用IDE生成过GUI应用程序,也可能生成过console应用程序,这是两种不同的子系统(...原创 2019-09-29 11:14:17 · 1229 阅读 · 0 评论 -
判断句柄是否有效的两种方式
判断句柄是否有效句柄相当于一个指向指针的指针,指向指针的指针同样是指针,所以暂且认为它是一个指针,那么CreateFile相当于new 分配一个资源,让这个指针指到这块资源的首地址,那么当CloseHandle(handle)后等于是delete操作。此时handle的值还在,但是资源已被释放掉,那这个时候如果去访问这个句柄,就等于访问一个非法的内存资源。那么现在回到这个问题,如何判断句柄是否...原创 2019-07-10 11:41:20 · 5507 阅读 · 0 评论 -
用HOOK禁用鼠标与键盘事件
//////////////////////////////////////////////////////////////////////////////////////////首先定义HWND g_hWnd; //定义一个窗口的句柄HHOOK g_hMouse; //鼠标的钩子过程HHOOK g_hKeyBoard; //键盘的钩子过程...原创 2019-09-09 14:41:29 · 903 阅读 · 0 评论 -
【.Net学习】之CLR基础原理
CLR是如何工作的 借用维基百科上的一副图来描述CLR的运行流程: 从源代码到应用程序执行CLR主要做了以下工作: 将源代码编译成托管模块 托管模块是一个标准的 32 位 Microsoft Windows 可移植执行体(PE32)文件,或者是一个标准的 64 位 Windows 可移植执行体(PE32+)文件,它们都需要 CLR 才能执行。一个托管模块主要包含一...原创 2019-09-29 15:23:32 · 1268 阅读 · 0 评论 -
MFC里面ON_COMMAND和ON_MESSAGE、ON_NOTIFY
在MFC应用程序中传输的消息有三种类型:窗口消息、命令消息和控件通知。窗口消息(Window Message)一般与窗口的内部运作有关,如创建窗口、绘制窗口和销毁窗口等。通常,消息是从系统发送到窗口,或从窗口发送到窗口。若需要窗口消息的完全的列表,请参考M F C文档。命令消息:命令消息一般与处理用户请求相关,当用户单击一个菜单项或工具栏时,命令消息产生,并被发送到能处理该请求的类对象...原创 2019-09-12 13:07:56 · 1695 阅读 · 0 评论