VC/MFC
文章平均质量分 89
oldmtn
WIN32, GDI/GDI+, VC/MFC, WIN8, Qt, ANDROID, Libevent, boost, ffmpeg, OPENGL等方面。
Happyiness is a journey not a destination. SoWork like you dont need money.Love like youve never been hurt.And Dance like no ones watching.... So Just Code like you dont need to run it successful.
展开
-
VC/MFC奇怪问题集锦
1. _CRTIMP void * __cdecl _decode_pointer(void *codedptr){ _ptiddata ptd; PVOID (APIENTRY *pfnDecodePointer)(PVOID) = NULL; if (#ifndef _M_AMD64 (FLS_GETVALUE == NULL)原创 2014-06-19 16:21:49 · 2122 阅读 · 0 评论 -
WM_USER 与 WM_APP的区别。。。
首先看下MSDN的文章RangeDescriptionFrom 0 through WM_USER –1Messages reserved for use by the system.From WM_USER through 0x7FFFInteger messages for use by private window classe原创 2012-08-24 17:27:16 · 1889 阅读 · 0 评论 -
如何处理窗口叠加时的自定义消息路由
先看一个图片目的: A可能希望接收B,C,D,D1等各个控件的消息。情况:目前B为一自定义控件,且在B.h向外提供一通知消息WM_B_NOTIFY(WM_USER+101)。但是A也想要接收C,D的通知消息,那么你可能想要SetBWndNotify,SetCNotify。但是你需要注意不能使你自定义的消息ID和WM_USER+101相同。这样你可能去B.h里面找那个WM_B原创 2012-08-24 15:18:13 · 1454 阅读 · 0 评论 -
__declspec(novtable) 的用法
__declspec(novtable) 在C++中接口中广泛应用. 不容易看到它是因为在很多地方它都被定义成为了宏. 比如说ATL活动模板库中的ATL_NO_VTABLE, 其实就是__declspec(novtable). __declspec(novtable) 就是让类不要有虚函数表以及对虚函数表的初始化代码, 这样可以节省运行时间和空间. 但是这个类一定不允许生成实例,转载 2012-08-01 09:45:44 · 9216 阅读 · 2 评论 -
记一次CEdit的bug
对话框上面有一个CEdit,该CEdit设定ES_NUMBER属性,输入非数字时,在父窗口弹出不知名的窗口。如下图:经检查发现是父对话框设定了WS_EX_TRANSPARENT属性。将该属性去掉就OK了。。WS_EX_TRANSPARENT Specifies that a window created with this style is to be tr原创 2012-07-31 09:14:40 · 1856 阅读 · 0 评论 -
窗口抖动效果
窗口抖动效果 原理:左右移动窗口,设定定时器,并设定窗口左右移动的最大范围。也可以根据此思想设定窗口上下移动,东北-西南,东南-西北,等特殊方向移动。实现:int m_nLeftMin;int m_nRightMax;CRect m_rcWnd;BOOL m_bLeft;int m_nJitterTime;#define ID_JITTER 100voi原创 2012-07-27 09:35:51 · 1316 阅读 · 0 评论 -
修改CMyEdit(派生自CEdit)边框的颜色的方法
void CMyEdit::OnPaint(){ CPaintDC dc(this); // device context for painting // TODO: Add your message handler code here // Do not call CEdit::OnPaint() for painting messages CRect rect; GetWindo原创 2012-06-29 14:14:05 · 4727 阅读 · 0 评论 -
如何让CSpinButtonCtrl和CEdit关联起来?
如何让CSpinButtonCtrl和CEdit关联起来?1.按Ctrl+D组合键,在对话框中出现控件的编号,将CEdit和CSpinButtonCtrl调整为相邻,CSpinButtonCtrl的编号比CEdit大一,或者在程序中利用SetBuddy设置相应的CEdit控件;2.设置CSpinButtonCtrl的属性,勾选Auto buddy及Set buddy integer两项;转载 2012-07-23 16:08:32 · 1068 阅读 · 0 评论 -
HeapAlloc、GlobalAlloc和new等内存分配有什么区别么?
查找了一些 new , GlobalAlloc, HeapAlloc分配内存方式的区别。转了一些资料//===========================================================//下面是资料1: 1. GlobalAlloc函数和new()的区别。 1>new是标准的C++分配内存函数。GlobalAlloc是WI转载 2012-08-06 17:48:46 · 2166 阅读 · 0 评论 -
1033,2052 是什么意思?
1033,2052 是什么意思?有时候我们去浏览软件安装后的目录,总会发现很多的安装目录下总有个名为 1033 或者 2052 目录。后来才明白,这个叫 LCID(Locale ID,区域性标识符)。常见的,1033 表示英语(美国),2052表示中文(中国)完整的LCID列表:Locale ID (LCID) ChartLocale IDs Assigne转载 2012-07-03 15:14:03 · 15123 阅读 · 0 评论 -
未定义整型-858993460,未定义指针0xcccccccc的含义
#includemain(){ int a; printf("%d",a);}为什么输出-858993460呢?我知道当一个未初始化赋值的时候,他在内存就默认保存为-858993460;我只是想知道它的内部机制?为什么就是这个数?这个数在内存有什么特别的含义?用VC DEBUG编译的就是这个数-858993460对应HEX为0xCCC原创 2012-07-02 17:56:42 · 2043 阅读 · 0 评论 -
使用PE文件格式 HOOK 其他进程API
今天研究了一下HOOK 其他进程API的方法有2个前提1. 使用远程线程注入, 具体可以参考《Windows核心编程》中22-InjLib里面的代码2. 更改被注入线程所要调用的API地址2.1 方法一:实用一个网上一个大牛写的类CHookInfoHookInfo.htypedef struct _HOOKSTRUCT{ FARPROC pfFunAddr; /原创 2012-06-30 22:02:27 · 1353 阅读 · 0 评论 -
PE文件格式与API HOOK
对于windows低层编程来说,进行API拦截始终是一件让人激动的事,用自己的代码来改变其它程序的行为,还有比这个更有趣吗?而且,在实现API拦截的过程中我们还有机会去熟悉许多在RAD编程环境中很少接触的东西,如DLL远程注入、内存管理,PE文件格式等知识。许多商业软件,如金山词霸等词典软件,各种即时汉化软件、甚至一些网络游戏的外挂中都用到了这种技术,各种调试工具中多多少少也要用到这种技术。实转载 2012-06-30 19:45:56 · 1180 阅读 · 0 评论 -
http://blog.csdn.net/geagle/article/details/1598572
Hook Win32 API 是一项有趣而实用的WINDOWS系统编程技术,应用领域十分广泛。虽然已经有不少的文章介绍过 Hook Win32 API 的方法了,我还是来作些简单的介绍,以便大家了解其工作原理。 Hook Win32 API 是什么意思?就是钩住Win32 API;那又何谓“钩”呢?就是绕弯的意思,让Win32 API函数的调用先绕一个弯路,在它执行实际功能之前,我们转载 2012-06-30 18:56:19 · 887 阅读 · 0 评论 -
老技术,新学习,API HOOK MessageBox简介 -- 另外还收集了JMP指令的用法
// HookAPI.cpp : Defines the entry point for the console application.//// 总结:将原API函数指针前加一个汇编的0xe9无条件跳转值, 将系统调用的API函数跳转到自定义的函数上来执行#include "stdafx.h"#include #include using namespace std;typ原创 2012-06-30 13:49:12 · 2873 阅读 · 0 评论 -
如何提升进程的权限
我们可以通过WriteProcessMemory函数直接修改其他进程的内存从而实现内存补丁或者游戏修改之类的功能,但是,有个问题,并不是所有的程序都是能够被写内存的,这从前面的日志 通过CreateToolhelp32Snapshot函数获得系统中当前运行的进程信息2 可以看出来,好多程序的打开状态是失败的。所以,提升当前进程的权限非常非常必要。程序实现的代码如下:#include w转载 2012-07-12 09:34:11 · 1599 阅读 · 0 评论 -
如何给对话框设置窗口类名
今天在研究ATL的时候发现修改类名是一件相当简单的事情。一,Win32应用程序类名修改1.新建Win32应用程序(HelloWorld)2.打开以程序命名(HelloWorld)的资源文件HelloWorld.rc(代码方式打开)查找:STRINGTABLE内容如下:STRINGTABLEBEGIN IDC_HELLOWORLD转载 2012-06-29 16:31:47 · 4193 阅读 · 0 评论 -
CDialog重载PreCreateWindow是无效的 -- MFC程序员要注意了...
一般的窗口的创建是使用Create函数,这个函数在创建窗口之前调用了PreCreateWindow函数,并且允许在创建创建之前在PreCreateWindow注册一个拥有自定义窗口样式的新的窗口类,来创建一个拥有自定义类名新的窗口。而模式对话框是通过CreateDialogIndirect来创建的,在这当中并没有调用PreCreateWindow函数,重载的PreCreateWindow函数根本就转载 2012-06-29 16:11:15 · 3631 阅读 · 0 评论 -
导出dll函数到txt中
1. depends2. 命令行: dumpbin.exe /EXPORTS mydll.dll示例: 命令行: dumpbin.exe /exports C:\\windows\\system32\\gdi32.dll > c:\\gdi32.txt将Gdi32.dll导出的函数输出奥c:\\gdi32.txt文件中原创 2012-08-28 14:29:56 · 1254 阅读 · 0 评论 -
查看dll文件被哪些软件调用的命令
比如你要查看有哪些进程调用了shell32.dll,可以在CMD下使用下面的命令 tasklist /m shell32.dll Tasklist用来显示运行在本地或远程计算机上的所有进程,带有多个执行参数。使用格式: Tasklist[/S system[/U username[/P[password]]]][/M[module]转载 2012-09-08 16:48:31 · 1750 阅读 · 0 评论 -
VC/MFC ( 1 ) : 滚动条用法
给出一些常见的有关滚动条的API。原创 2014-07-21 10:56:25 · 1762 阅读 · 0 评论 -
文件卸载不干净的解决办法
在我使用某软件的过程中,有的时候我想要安装新版本。但是必须先自己将旧版本卸载,我到控制面板里面将旧版程序卸载后,再装新版本的时候,出现提示“旧版程序仍然在,需要先将其卸载”。我的个去啊,搞什么?一般的原因是因为每个安装的程序都有一个GUID,并且在Uninstall里面也有该GUID键值。解决步骤:1. 先去你安装软件的注册表下面找到和该安装软件对应的GUI原创 2014-03-24 16:39:16 · 3359 阅读 · 0 评论 -
VC如何生成随机数。。。。
rand( ) 函数生成的随机数表面看是随机的,其实每次执行程序后,随机数都是固定的不通过真实世界的数据采样,无法产生真正的随机数,通过现在的计算机算法只能产生伪随机数。因此需要先设定随机数种子srand(time(NULL));rand();得到的就是随机数了。。。原创 2013-08-15 13:40:25 · 1317 阅读 · 0 评论 -
VC中如何将CEdit和CSpinButtonCtrl绑定到一起。。。。
有2个要素必须满足1. CSpinButtonCtrl的控件ID必须为CEdit控件ID加1.2. 修改CSpinButtonCtrl的一些属性,如下图:原创 2013-08-14 17:30:58 · 1358 阅读 · 0 评论 -
正被停用的激活上下文不是最近激活的
最近碰到这个问题,,,,总是程序执行一段时间才出现错误,很麻烦。。。一度不想理会这个bug,但是几天后,只要执行一段时间,这个bug就跑出来恶心人。。。不得已我需要解决。。VS2005给我的提示信息为: Integer division by zero正被停用的激活上下文不是最近激活的第一句很简单,除0 了。。但是那么多代码为原创 2013-08-21 09:45:18 · 4235 阅读 · 0 评论 -
VC如何正确的删除C++封装的句柄。。。
参考1:http://blog.csdn.net/oldmtn/article/details/6904697参考2:http://bbs.csdn.net/topics/390405810VC中C++类封装了窗口句柄。C++通常是在析构函数删除动态分配的内存。而窗口A是在OnDestroy里面删除自己所有的子窗口。我们不能一会这里删除子窗口,一会那里删除C++原创 2013-08-19 12:07:26 · 2017 阅读 · 0 评论 -
如何修改VS2005创建MFC工程的默认模板
大家都知道新建一个VS2005的对话框工程,会有自动的模板生成,但是这个模板和我喜欢的风格不搭。。。怎么办,修改之。。。其中MFC中的对话框工程的模板在C:\Program Files\Microsoft Visual Studio 8\VC\VCWizards\AppWiz\MFC\Application\templates\1033中。。我主要是要修改dia原创 2013-07-11 16:39:18 · 1597 阅读 · 0 评论 -
单击ListCtrl时,LVN_ITEMCHANGED响应3次
void CTestWin32Dlg::OnLvnItemchangedList(NMHDR *pNMHDR, LRESULT *pResult){ LPNMLISTVIEW pNMLV = reinterpret_cast(pNMHDR); // TODO: Add your control notification handler code here if( pNM原创 2013-07-11 11:14:21 · 4349 阅读 · 0 评论 -
GetDlgItem返回NULL的原因
今天要移植一个程序到WINDOWS上面,用的是MFC。其实就是给Dialog上面加按钮,添加新功能。我直接给Dialog添加按钮但是在OnInitDialog里面CWnd* p1 = GetDlgItem(IDC_BTN_XXX);的时候,返回NULL,我不解,又换了个之前已经存在的ID,还是返回NULL。为什么呢?我有办法。Baidu, google.有的Bl原创 2013-06-05 15:25:01 · 5846 阅读 · 3 评论 -
映像劫持-----程序重定向
有关HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Image File Execution Options映像劫持的示例代码~~~~ 代码如下#include #include using namespace std;void main() { TCHAR Sub原创 2011-04-01 16:15:00 · 795 阅读 · 0 评论 -
注册表操作API 目录
Registry Functions(注册表操作API)2008/08/06 22:43来源:MSDN关键字:注册表API前置知识:APIPS:这里仅仅列出API,具体用法,大家可以去点击相应链接查询Registry FunctionsThe following are the registry functions.转载 2011-04-01 11:54:00 · 1550 阅读 · 0 评论 -
C/C++获取当前系统时间
//方案— 优点:仅使用C标准库;缺点:只能精确到秒级#include #include int main( void ) { time_t t = time(0); char tmp[64]; strftime( tmp, sizeof(tmp), "%Y/%m/%d %X %A 本年第%j天 %z",localtime(&t) );转载 2013-04-15 11:38:11 · 1197 阅读 · 0 评论 -
动态创建窗口的问题--风格WS_BORDER以及WS_EX_CLIENTEDGE
DWORD dwStyle = WS_CHILD | WS_VISIBLE; m_twnd.Create(NULL, NULL, dwStyle, CRect(10,10,110,110), this, 0);每次研究一点东西,都没有记录,下次需要的时候有浪费时间重新去研究。本人就是个没有总结习惯的人,这样等于没用积累,实在不行。这2天研究了一下WS_BORDER和WX_EX_CLI原创 2013-02-26 16:27:47 · 4850 阅读 · 0 评论 -
win32 api 文件操作
CreateFile打开文件要对文件进行读写等操作,首先必须获得文件句柄,通过该函数可以获得文件句柄,该函数是通向文件世界的大门。ReadFile从文件中读取字节信息。在打开文件获得了文件句柄之后,则可以通过该函数读取数据。WriteFile向文件写入字节信息。同样可以将文件句柄传给该函数,从而实现对文件数据的写入。CloseHandle关闭文件转载 2013-03-09 14:56:10 · 1132 阅读 · 0 评论 -
WinDebug 调试问题 -- Breakpoint 4's offset expression evaluation failed.
最近调试出现这个问题,我总是归咎于pdb文件问题,结果重新编译了N次,还是出现这问题。一开始我根本忽略这个error,所以重新编译pdb,还是错误,所以我不得不重新重视这个error code.今天第一次发现error code真的非常重要。然后我开始找度娘帮助了,很快我就解决了,是因为断点设置不对的问题。//////////////////////////原创 2013-03-03 20:44:56 · 1782 阅读 · 0 评论 -
vc编译器各选项含义及说明
转自:http://blog.pfan.cn/lym51/24856.html=====vc编译器各选项含义及说明(值得收藏)======== -优化- /O1 最小化空间 minimize space /Op[-] 改善浮点数一致性 improve floating-pt consistency /O2 最大化转载 2013-01-23 15:07:51 · 906 阅读 · 0 评论 -
常见颜色 RGB值
128/0/0 深红 255/0/0 红 255/0/255 粉红 255/153/204 玫瑰红 153/51/0 褐色 255/102/0 桔黄 255/153/0 浅桔黄 255/204/0转载 2012-12-20 16:33:15 · 4830 阅读 · 0 评论 -
硬件检测:安装、停用
简介现在对于IT的安全来说,热插拨设备是个很大的威胁。在这篇文章中,我将试着开发一个用户应用程序来检测本机系统上的设备改变。例如:插入一个USB设备、Ipod、USB无线网卡等等。这个程序同样也可以停用任何支持插拔的设备。在文章的后面,我会简述一下程序的工作原理和它的局限性。怎么来检测硬件设备的改变?事实上,Windows操作系统会对上层程序发送WM_DEVICECHANGE消息来通知转载 2012-07-10 11:21:29 · 1156 阅读 · 0 评论 -
常见硬件的设备类GUID
ClassGUIDDevice DescriptionCDROM4D36E965-E325-11CE-BFC1-08002BE10318CD/DVD/Blu-ray drivesDiskDrive4D36E967-E325-11CE-BFC1-08002BE10318Hard drivesDisplay4D36E968-E325-11转载 2012-07-10 11:24:28 · 4417 阅读 · 0 评论 -
文件操作API和CFile类
文件操作API和CFile类------------RisingMine写于2006年2月8日在VC中,操作文件的方法有两种,一是利用一些API函数来创建,打开,读写文件,另外一个是利用MFC的CFile类,CFile封装了对文件的一般操作。下面酒主要介绍如何利用这两种方法操作文件。1.创建或打开一个文件 API函数CreateFile可打开和创建文件、管道、邮槽、通信服务、设备以转载 2012-07-09 17:17:04 · 734 阅读 · 0 评论