- 博客(11)
- 资源 (1)
- 收藏
- 关注
转载 OnEraseBkgnd、OnPaint与画面重绘(很好的说明其调用实现关系)
问题背景:窗体在重绘时,由于过频的刷新会引起闪烁现象——窗体在刷新时,总要有一个擦除原来图象的过程OnEraseBkgnd,它利用背景色填充窗体绘图区,然后在调用新的绘图代码进行重绘,这样一擦一写造成了图象颜色的反差。当WM_PAINT的响应很频繁的时候,这种反差也就越发明显。绘制过程:当窗口整体需要重绘时,系统依次发送WM_NCPAINT、WM_ERASEBKGND、WM_PAINT...
2018-09-07 09:25:06
332
转载 GetWindowRect和GetClientRect的区别详解
一:关于坐标 MFC中绘图时经常涉及到坐标计算,GetWindowRect和GetClientRect这两个函数,是获取逻辑坐标系中窗口或控件(其实也是窗口)大小和坐标的常用函数了,有什么不一样的?先说说什么叫逻辑坐标?讲到逻辑坐标,它相对的一个概念是设备坐标,是为了屏蔽掉不同设备属性差别而设置的抽象坐标系,说白了,就是独立于设备坐标的统一接口,程序员不需要去在具体的设备上进行绘图操作,...
2018-09-06 15:11:28
226
原创 GDI+ 从资源文件读取自定义图片
BOOL ImageFromIDResource(UINT nID, LPCTSTR sTR, Image * & pImg){ HINSTANCE hInst = AfxGetResourceHandle(); HRSRC hRsrc = ::FindResource (hInst,MAKEINTRESOURCE(nID),sTR); // type if (!hRsrc) ...
2018-07-31 10:14:55
882
原创 mfc 对话框显示PNG
使用GDI+可以轻松实现首先在CxxApp.cpp中加载GDI+BOOL CxxApp::InitInstance(){ // 如果一个运行在 Windows XP 上的应用程序清单指定要 // 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式, //则需要 InitCommonControlsEx()。否则,将无法创建窗口。 INITCOMMONCONTR...
2018-07-19 16:30:11
1605
转载 ShellExecuteEx提升子进程权限
首先说下ShellExecuteEx是如何提升权限的,ShellExecuteEx函数只有一个参数,就是SHELLEXECUTEINFO结构体,不过是指针类型的,这无所谓,关键是这个结构体中有一个参数lpVerb,它的作用就是指定如何操作文件lpFile,提升权限就是设置lpVerb为“runas”。将lpVerb设定为”open”或NULL的时候,创建的子进程继承了主进程的权限,当主进程使用管理...
2018-07-12 18:21:37
428
转载 进程隐藏的各种方法 以及分析比较以及实现链接
典型进程隐藏技术1 基于系统服务的进程隐藏技术在 W I N 9X 系列操作系统中, 系统进程列表中不能看到任何系统服务进程, 因此只需要将指定进程注册为系统服务就能够使该进程从系统进程列表中隐形在win9x下用RegisterServiceProcess函数隐藏进程,NT架构下用不了 即win2000 xp等什么的用不了此方法。2 基于API HOOK的进程隐藏技术API HOOK指的是通...
2018-07-10 10:38:23
2485
转载 通过Windows进程ID获取窗口句柄
通过Windows进程ID获取窗口句柄方法一:使用EnumWindows的方式///< 枚举窗口参数typedef struct{ HWND hwndWindow; // 窗口句柄 DWORD dwProcessID; // 进程ID}EnumWindowsArg;///< 枚举窗口回调函数BOOL CALLBACK EnumWindowsProc(...
2018-07-09 14:25:53
14303
3
原创 VC 屏蔽双击打开程序,只能被第三方程序调起
实现如下功能Axx.exe:双击不能运行,只能被Bxx.exe调起解决方案:通过命令行参数判断,如果等于Bxx.exe设置的参数信息,则运行,否则不运行。Axx.exeBOOL CAxxApp::InitInstance(){//获取命令行参数 如果不是调用程序特定传入的参数“-XXXX”,则停止运行 2010/1/17 //////////////////////////////////////...
2018-07-06 17:00:56
406
转载 VC++ 文件路径相关函数
转自:http://blog.csdn.net/hehe6378/article/details/18990739路径截断与合并函数 GetModuleFileName得到模块路径名PathRemoveArgs去除路径的参数PathRemoveBackslash去除路径最后的反斜杠“\”PathAddBackslash 在路径最后加上反斜杠“\”PathRemoveBlanks去除路径前后的空格P...
2018-07-06 10:20:40
428
原创 CToolTipCtrl提示内容为什么不能换行,加"\r\n"也不行
Tooltip中由一个方法叫做SetMaxTipWidth,MSDN中的描述说是设定Tips窗口的最大宽度,然后就没了。其实这个方法是使用SDK中的TTM_SETMAXTIPWIDTH 消息,查一下这个消息的描述,就会发现很多内容。1. 这个方法是设定Tips窗口的最大宽度,in pixel;2. 如果文字超过这个最大宽度,则control进行自动换行,以空格为换行标志;3. 如果无法换行(没有空...
2018-07-05 13:49:42
441
转载 MFC 如何设置子对话框背景透明而控件不透明
想子对话框透明,主要是截获WM_ERASEBKGND消息不去清空背景或者设置窗口default brush为NULL_BRUSH,另外重要的一点是window style中不能包含WS_CLIPSIBLINGS标记,同时parent window的style不能包含WS_CLIPCHILDREN,这样才能获得parent window被子窗口遮住部分的背景...
2018-07-03 09:58:53
2156
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人