自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 收藏
  • 关注

原创 _sntprintf

_sntprintf是snprintf的ANSI和UNICODE通用定义,原型:int snprintf(char *str, size_t size, const char *format, ...)功能:将可变个参数(...)按照format格式化成字符串,然后将其复制到str中(1) 如果格式化后的字符串长度 (2) 如果格式化后的字符串长度 >= size,则只将其

2015-07-31 10:24:14 2305

原创 warning :OnDestroy or PostNcDestroy in derived class will not be called

应用程序中使用指针创建了对话框,在析构函数中使用delete时,会出现以下警告:AppMsg - Warning: calling DestroyWindow in CWnd::~CWnd; OnDestroy or PostNcDestroy in derived class will not be called.AppMsg - Warning: calling DestroyW

2015-07-30 14:53:31 2252

原创 InvalidateRect(rect) 防止图片移动时发生闪烁

Invalidate();   执行时,是先用背景刷清屏以后,再重新绘画  InvalidateRect(rect), 他执行时, rect区域以背景刷清屏,rect以外的区域不调用背景刷,而是将屏幕上现有的内容(如图片图形等)作为背景,在这个背景上直接画图。  若是,图片和背景反差很大,则使用Invalidate() 会发生闪烁                          

2015-07-30 10:03:47 1520

原创 获取进程CPU占用率 -- NtQuerySystemInformation

今天,我们主要讨论的是一个函数NtQuerySystemInformation(ZwQuerySystemInformation)。当然,你不要小看这么一个函数,它却为我们提供了丰富的系统信息,同时还包括对某些信息的控制和设置。以下是这个函数的原型:typedef NTSTATUS (__stdcall *NTQUERYSYSTEMINFORMATION) (IN

2015-07-28 20:12:15 4785

原创 windows任务管理器中的工作设置内存,内存专用工作集,提交大小详解

虽然是中文字,但是理解起来还是很困难,什么叫工作设置内存,什么叫内存专用工作集,什么叫提交大小,区别是什么,让人看了一头雾水.通俗的讲工作设置内存是程序占用的物理内存(包含与其他程序共享的一部分), 内存专用工作集是程序独占的物理内存, 提交大小是程序独占的内存(包含物理内存和在页面文件中的内存).注:页面文件就是存放不在物理内存中的内存,文件路径一般在C:\pagefile.sys,

2015-07-28 18:14:42 3629

原创 Windows工作集内存

Windows任务管理器默认情况下,“内存(私人工作集)”列处于选中状态。私人工作集是工作集的一个子集,它是描述每个进程所使用的内存数量的技术术语。私人工作集专门描述了某个进程正在使用的且无法与其他进程共享的内存数量。内存 - 工作集是私人工作集中的内存数量与进程正在使用且可以由其他进程共享的内存数量的总和。内存 - 峰值工作集是进程所使用的工作集内存的最大数量。内存 - 工作

2015-07-28 17:37:20 4205

翻译 基于AFD驱动的进程流量控制

基于AFD驱动的进程流量控制摘要:目前有些软件可以监控进程流量,功能实现的都很多错的。对于进程流量的控制很很多种方案,每一种方案也都有其缺点。比如有应用层基于LSP来做的,也有通过TDI和NDIS中间层来做的。其实现的效果和复杂度也各不相同。而我们要讨论的是一种基于AFD驱动来做的一种进程流量控制方案。   关键词:AFD进程流量 控制驱动1.  总述目

2015-07-27 16:17:34 1258

原创 寻找正在连接中的网络连接

寻找正在连接中的网络连接,并开启网络连接的网络连接共享功能。注意:要设置为管理员权限启动工程。否则EnableSharing会失败。#include #include #include #include #pragma comment(lib,"Iphlpapi.lib")#pragma comment(lib,"Rpcrt4.lib")//GUID//启用、禁用网卡

2015-07-26 18:52:02 1331

原创 获取当前电脑所有网络连接名字

最近因为项目有需要获取本机的所有存在的网络连接名称,在网上也找了资料,有好几种方法,不过就只有一种是能够达到我想要的要求写下来给大家参考下第一种方法:遍历注册表来获取void __fastcall MyGetLanAdapterName(char *szLanAdapterName){ HKEY hKey, hSubKey, hNdiIntKey; if(

2015-07-26 14:18:56 3313

原创 获取网络连接名称“本地连接”的两种方法

方法一:通过WMI得到连接属性NETCON_PROPERTIES,这个结构体定义如下: typedef struct tagNETCON_PROPERTIES    {    GUID guidId;    LPWSTR pszwName;    LPWSTR pszwDeviceName;    NETCON_STATUS Status;    NETCO

2015-07-26 14:12:19 10748

原创 也谈VC中ModifyStyle&ModifyStyleEx无法改变控件的Style)

一个View中用到了一个CListCtrl,在OnInitialUpdate函数里面他调用了m_listCtrl.ModifyStyleEx(0, LVS_EX_FULLROWSELECT);但是结果是并没有改变View中这个ListCtrl的效果。      仔细的查阅了MSDN的关于ModifyStyleEx的说明,发现没什么可以的地方,调试几遍发现也没异常,最后在网上一搜索Modif

2015-07-25 10:48:54 2447

原创 MFC 初始化 GDI+

1. 在stdafx.h文件中在#include 后面加#include //将GDI+头文件加入到工程中 #pragma comment(lib, "gdiplus.lib") //将GDI+的lib文件加入到工程中 using namespace Gdiplus; //使用GDI+的命名空间 2. 在 class C**App : public CW

2015-07-23 13:07:54 2100

原创 设置环境变量

1.环境变量的设置有几种方式? 设置环境变量有两种方式:第一种是在命令提示符运行窗口中设置;第二种是通过单击“我的电脑→属性→高级”标签的“环境变量”按钮设置。需要注意的是,第一种设置环境变量的方式只对当前运行窗口有效,关闭运行窗口后,设置就不起作用了,而第二种设置环境变量的方式则是永久有效。2.如何在命令提示符窗口中设置环境变量? 在“开始→运行”框中输入“cmd”后按“确定

2015-07-21 19:28:16 761

原创 SPDL : 得到桌面,快速启动或程序组的路径

有时候,为了方便用户使用我们编写的程序,需要在桌面,快速启动或程序组中创建程序的快捷方式。下面就介绍在VC下如何为程序创建快捷方式。一.得到桌面,快速启动或程序组的路径这里介绍二个win32 API函数来完成这个任务。第一个函数获得系统特殊路径HRESULT SHGetSpecialFolderLocation(HWND hwndOwner,  int nFolder,

2015-07-21 17:44:34 971

原创 PostMessage与PostThreadMessage的区别

消息队列是属于线程的,Post消息就是把消息放到目标线程的消息队列中。这两者的区别在于:PostMessage 通过指定目标窗口句柄来确定目标线程,通常情况下由窗口过程来处理消息;PostThreadMessage 直接指定目标线程ID来确定目标线程,没有目标窗口,只能在消息循环中直接根据消息类型做相应的处理。在程序设计的选择方面,如果是UI线程,则应使用PostMessage;如

2015-07-21 15:47:01 2451

原创 使用PostThreadMessage在Win32线程间传递消息

PostThreadMessage可以用于线程之间的异步通讯,因为它不用等待调用者返回,这也许是线程通讯中最简单的一种方法了。PostThreadMessage是一个Windows API函数。其功能是将一个消息放入(寄送)到指定线程的消息队列里,不等待线程处理消息就返回。原型:BOOLPostThreadMessage( DWORDidThread, UINTMsg, WPARAMw

2015-07-21 15:13:26 4013 1

原创 VC进程间通信之消息传递PostMessge()或SendMessage()

SendMessage, PostMessage实现进程通讯项目1中发送消息:#define WM_MYMESSAGE WM_USER + 1 CWnd *pWnd = CWnd::FindWindow("#32770", "MfcTest"); //目标进程的窗口类名和窗口名 if (pWnd){ pWnd->SendMessage(WM_MYMESSAGE, N

2015-07-20 16:19:05 11647

原创 区别 FindWindow,FindWindowEx,EnumWindows,EnumChildWindows

1. FindWindow()HWND FindWindow(LPCSTR lpClassName, LPCSTR lpWindowName);功能:查找与指定窗口类名和窗口名称相匹配的顶级窗口,这个函数不搜索子窗口。参数:如果lpClassName为null,将会寻找任何与lpWindowName参数匹配的窗口,如果lpWindowName为NULL,则匹配所有窗口名。返回值:成

2015-07-20 13:54:16 16260 2

原创 修改Dialog窗体的类名

VS2013 的MFC 工程(工程名: MobileLink),想要修改窗体的类名时,发现不是像设置窗口名一样调用一个函数可以实现的。实现的注意问题,请看注释。(1) 修改窗体资源 RC 文件:// // Dialog // IDD_MOBILELINK_DIALOG DIALOGEX 0, 0, 320, 200 STYLE DS_SETFONT | D

2015-07-20 13:20:38 2115

原创 vc获得窗口并枚举其子窗口

调用函数FindWindow(窗口类名,窗口标题)获得窗口的句柄,然后调用EnumChildWindows(父窗口,回调函数名,参数)来获得父窗口下的子窗口的句柄,代码实现如下 #include BOOL CALLBACK EnumChildProc(HWND hWnd,LPARAM lParam);void main(int argc, char* argv[]) {

2015-07-19 19:57:00 6668

原创 VC 获取任务栏窗口的句柄

本文将介绍一个未公开的Win32 API函数:GetTaskmanWindow,利用它对Windows的任务栏进行操作。这个函数返回拥有任务栏按钮的窗口句柄。在微软的MSDN文档中,对任务栏是这样描述的:"……Windows界面包含一个特殊的应用程序桌面工具栏,叫做任务栏。任务栏可以用于在打开的不同窗口之间进行切换,以及启动新的应用程序……。任务栏包含有开始菜单、任务栏按钮、快捷菜单和状态

2015-07-18 16:46:54 8105

原创 WindowFromPoint -- 获得包含指定点的窗口的句柄

WindowFromPoint函数功能:该函数获得包含指定点的窗口的句柄。函数原型:HWND WindowFromPoint(POINT Point);参数:Point:指定一个被检测的点的POINT结构。返回值:返回值为包含该点的窗口的句柄。如果包含指定点的窗口不存在,返回值为NULL。如果该点在静态文本控件之上,返回值是在该静态文本控件的下面的窗口的句柄

2015-07-18 13:48:51 6809

原创 VC 获取控制台窗口的句柄(hWnd)

在Windows中,句柄是一个系统内部数据结构的引用。例如当你操作一个窗口,或说是一个Delphi窗体时,系统会给你一个该窗口的句柄,系统会通知你:你正在操作142号窗口,就此你的应用程序就能要求系统对142号窗口进行操作——移动窗口、改变窗口大小、把窗口极小化为图标等。实际上许多Windows API函数把句柄作为它的第一个参数,如GDI(图形设备接口)句柄、菜单句柄、实例句柄、位图句柄等,不仅

2015-07-18 13:41:03 3718

原创 VC 各种情况下的窗口句柄的获取

AfxGetMainWnd AfxGetMainWnd获取自身窗口句柄HWND hWnd = AfxGetMainWnd()->m_hWnd;GetTopWindow函数功能:该函数检查与特定父窗口相联的子窗口z序(Z序:垂直屏幕的方向,即叠放次序),并返回在z序顶部的子窗口的句柄。函数原型:HWND GetTopWindow(HWND hWnd);参数:

2015-07-18 12:24:12 943

原创 Windows时间函数

计算程序运行时长:1. 添加定时器ON_WM_TIMER()初始化: m_dwStartTime = GetCurrentTime(); SetTimer(1, 1000, NULL);void CVPNDialerDlg::OnTimer(UINT_PTR nIDEvent){ // TODO: 在此添加消息处理程序代码和/或调用默认值 DWORD dwTime =

2015-07-16 16:51:07 751

转载 创建自己的dll与lib:dll与lib文件的区别

经常使用到第三方库。比如:glut,freetype,sdl,大一点的有CEGUI,OSG等。这些库虽然是开源的,但是很多时候只是使用他们,一般不会去修改。使用就会涉及到三个东西:.h  .lib  .dll文件。主要有三种模式:.h+.lib       .h+.lib+.dll.dll 第二种是最常见的,其他两种都比较少 

2015-07-10 15:09:56 612

原创 VS"后生成事件" 菜单的使用

网上有许多的文章都在介绍如何创建一个自定义的dll文件,以及如何使用一个dll文件,在此不在赘述。本文主要介绍如何使用VS2008的"生成后事件"的命令行,将一个dll文件直接拷贝到项目的debug,或者release文件中。首先,找到项目属性下的“生成事件”选项如下图所示:单击“命令行”右侧的三点号,出现了命令行添加窗口,如下图所示。输入命令“copy /b "$(I

2015-07-10 15:02:16 1299 1

原创 GetKeyState(), GetAsyncKeystate(), GetKeyboardSlate()

GetKeyState、GetAsyncKeyState、GetKeyboardState函数的区别:1、BOOL GetKeyboardState( PBYTE lpKeyState );获得所有的256个键(键盘按键、鼠标按键等等)的状态,lpKeyState是指向一个256bit的数组,存放所有键的状态。2、SHORT GetAsyncKeyState( int vKey

2015-07-10 14:48:59 1323 2

原创 Edit Control响应全选(Ctrl+A)

MFC中的Edit控件用于输入数据,当输入的数据为大段数字的时候,全选功能就显得很重要了,可偏偏在MFC中Edit控件就不 支持全选,Ctrl+A不行,双击也不行。Ctrl+C和Ctrl+V都是默认支持的,因此为了使用方便,我们只能自己让Edit去支持Ctrl+A全选 功能了。实现的方式也比较简单,自己处理消息就是!Ctrl+A是一个组合消息,在检测到A或者a按键按下的时候,判断Ctrl键的状

2015-07-10 14:18:19 5263

原创 CEdit添加右键菜单, ClistCtrl接收文件拖拽

CEdit接收文件拖拽很容易,但ClistCtrl却很难;CListCtrl添加右键菜单很容易,而CEdit却很难。这种功能不全面,阴差阳错的感觉让人很头疼。下面介绍一下 CEdit添加右键菜单 和 CListCtrl接收文件拖拽的方法1. CEdit 添加右键菜单从CEdit派生出一个类CMyEdit,添加消息ON_WM_CONTEXTMENU(),响应消息函

2015-07-09 14:56:51 1728

转载 Wow64(32位进程)注入DLL到64位进程

http://blog.poxiao.me/p/wow64-process-inject-dll-into-x64-process/#Wow64环境下32位进程注入64位进程DLL注入向其他进程注入DLL通常的做法是通过调用CreateRemoteThread这个API在目标进程内创建一个远程线程,用这个线程来调用LoadLibraryA或LoadLibraryW(下文统称Load

2015-07-04 13:11:31 5904

原创 BringWindowToTop(), SetForegroundWindow(), SetActiveWindow()

1. SetActiveWindow()原型:CWnd* SetActiveWindow();HWND SetActiveWindow(hWnd);功能:该函数激活一个窗口,hWnd:将被激活的最顶层窗口。返回值:若函数调用成功,则返回原先活动窗口的句柄。若函数调用失败,则返回值为NULL备注:SetActiveWindow函数激活一个窗口,但当应用程序处于后台时,将不激

2015-07-04 11:55:23 8120

原创 MFC窗体去边框、置顶、全屏、激活

静态移除长提边框很简单,直接设置“Border”属性为"none"即可"Maximize Box", “Minimize Box” 设置是否显示 最大化/最小化按钮;“System Menu” 设置 是否显示 关闭按钮;1. 代码中动态移除窗体边框的方法DWORD dwStyle = GetStyle(); //等价于GetWindowLong(m_hWnd, GWL_ST

2015-07-04 11:52:19 5909

原创 VC修改窗口属性 GetWindowLong(), SetWindowLong()

修改窗口属性说明:以下函数对于POPUP窗口有效,对于子窗口好像不行。//最小化按钮有效::SetWindowLong(m_hWnd,GWL_STYLE,GetWindowLong(m_hWnd,GWL_STYLE) | WS_MINIMIZEBOX );  ::SetWindowPos(m_hWnd,NULL,0,0,0,0,SWP_NOMOVE|SWP_

2015-07-01 19:06:27 2652

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除