windows SDK/MFC
文章平均质量分 78
yiruirui0507
一个喜欢矛盾的人。
展开
-
Unicode字符集和多字节字符集关系
<br />在计算机中字符通常并不是保存为图像,每个字符都是使用一个编码来表示的,而每个字符究竟使用哪个编码代表,要取决于使用哪个字符集(charset)。 <br /> 在最初的时候,Internet上只有一种字符集——ANSI的ASCII字符集,它使用7 bits来表示一个字符,总共表示128个字符,其中包括了英文字母、数字、标点符号等常用字符。之后,又进行扩展,使用8 bits表示一个字符,可以表示256个字符,主要在原来的7 bits字符集的基础上加入了一些特殊符号例如制表符。 <br /> 后转载 2010-11-27 23:56:00 · 649 阅读 · 0 评论 -
VC++SDK中实现直线(矩形,椭圆等)的移动及直线依附矩形椭圆的移动方法(附:运行效果图)
在SDK中实现画条直线,画个矩形等都有现成的函数供我们去调用,有时候直线,矩形画完之后需要能够随鼠标进行移动进而调整图形的位置。不知道该怎么去表述,就贴代码吧,代码中已经添加了很详细的注释了。直接把完整的例子代码都贴出来吧,这样最省事了。// areatest.cpp : 定义应用程序的入口点。//#include "stdafx.h"#include "areates原创 2011-11-03 21:19:50 · 3368 阅读 · 0 评论 -
vc6.0中用GDIPlus实现加载动态gif图片(非MFC实现)
今天心情很嗨皮,原因是花了5块钱买了一张刮刮彩,给中了100快,喜悦感可谓是油然而生吧,好了进入正题吧。关于GDI+的介绍在这里就不谈了,总之相比GDI确实方便了太多,比如首先GDI仅仅支持bmp格式的位图,对其他格式比如jpg,png,gif.....都很吃力了,而用GDI+确原创 2011-08-20 00:16:09 · 8781 阅读 · 13 评论 -
利用钩子函数来注入DLL的一个具体应用:点击桌面不同图标,播放相应音符
最近看核心编程,看到DLL注入这一章,有一个Desktop Item Positon Saver(DIPS)的例子,这个例子是使用窗口挂钩来将一个DLL注入到Explorer.exe的地址空间中,来保存和恢复图标位置。于是便想根据这个例子自己改造一下,正好前段时间看到在 Google 的首页上,谷歌为了纪念电吉他之父莱斯·保罗 96 周年诞辰,特意做了一个很有意思的Doodle,这个 谷歌电吉他L转载 2011-06-30 20:52:00 · 2043 阅读 · 0 评论 -
WIN32 SDK中树形视图与图像列表的配合使用实例(一)
树形视图算属于高级控件了,比较特别一点,能够很清晰的反应某种层次关系,日常生活中也比较常见,比如资源管理器左边窗口就正是树形视图。同时,它也不例外的属于窗口,那就可以用CreateWindowEx来创建,需传递一个"SysTreeView32"的类名,特殊之处在于这家伙属于通用控件,因此需要在代码中加入InitCommonControls函数。InitCommonControls函数是动态链接库comctl32.dll中的一个函数,只要在您的程序中的任意地方引用了该函数就、会使得WINDOWS的程序加载器P原创 2011-04-20 22:02:00 · 6053 阅读 · 3 评论 -
对LockWindowUpdate与GetDCEx的理解
<br />MSDN如是说:<br />The LockWindowUpdate function disables or enables drawing in the specified window. Only one window can be locked at a time. <br /><br />BOOL LockWindowUpdate(<br /> HWND hWndLock // handle to window<br />);<br /><br />Parameters<br /原创 2011-04-18 21:24:00 · 2698 阅读 · 1 评论 -
WINDOWS核心编程第三章内核对象的一点细节
久仰此书大名已久,可惜以前没看懂。。。现在感觉有点基础了回头再看,感觉多少有点死皮赖脸的嫌疑。。。。关于啥是内核对象请看第三章就对了,看的时候发现书上说GetCurrentProcess返回的是伪句柄(对GetCurrentDirectory比较熟悉,吃过一次亏,进程工作目录跟进程的镜像文件EXE所在的路径完全不是一回事,尤其设置了程序开机自启动,重启后默认的进程工作目录是系统目录,所以特原创 2011-06-04 22:12:00 · 1335 阅读 · 1 评论 -
设备上下文(DC)与内存设备上下文中的位图与画刷属性的一些零碎
设备内容众所周知,设备上下文是一种包含有关某个设备,如显示器、打印机等的绘制属性信息的WINDOWS数据结构。所有绘制调用都是通过设备上下文对象进行,其中这些对象中包含了画笔,位图,画刷等。设备内容与特定的显示设备相关,对于视讯显示器,设备内容总是与显示器上的特定的窗口相关。设备内容中的有些值是图形属性,这些属性定义了GDI绘图函数的工作细节,for example,TextOut,设备内容的属性中确定了文字的颜色,文字的背景色,x坐标,Y坐标映射到所要显示区域的方式,还有显示这些文字时系统使用的字体。当一原创 2011-04-17 17:28:00 · 2967 阅读 · 0 评论 -
WINDOWS内存映射文件原理分析+代码演示
WINDOWS为任何一个进程都赋予了4G的独立的虚拟地址空间,然而学过OS的都晓得这个只是逻辑上的虚拟的地址空间,进程实际拥有的远小于4GB的物理地址空间。并且进程的虚拟地址空间是每个进程私有的,有操作系统分配,本质上不过是物理内存地址的映像罢了。因此可以得出结论:在进程内运行的线程只能访问其所处进程的内存空间,即不同进程中可以用相同地址的指针用来指向属于各自进程中的内容,互不干扰,因为彼此都是以进程中的虚地址去访问内存的,操作系统再将虚拟地址转换为真正的物理内存地址。这样减少了程序员很多的麻烦事,使得我们原创 2011-03-31 23:57:00 · 6010 阅读 · 4 评论 -
利用远程线程将代码注入到目标进程中执行
<br />/* ************************************<br />* remote.c<br />* 创建远程线程、将代码注入到其他进程中执行<br />**************************************/<br />/* 头文件 */<br />#include <windows.h><br />#include <Tlhelp32.h><br />/*************************************<br />* BO原创 2011-03-26 23:18:00 · 3181 阅读 · 4 评论 -
给VC/SDK中的应用程序加上皮肤(实例演示)
<br />网上MFC加皮肤的资料蛮多的,SDK方面的相对较少,但是原理雷同,废话不多说了。<br />简单说明一下过程<br />1、复制 SkinH.dll、SkinH.lib、SkinH.h 以及皮肤文件MSN.she 至工程目录下;<br /> 这里为了方便我直接把皮肤文件放到了一个文件夹中,在包含头文件的时候注意相应的路径就OK。<br />2、在工程中引入 .h 头文件及 Lib 静态库,大家在引用的时候要注意文件的路径;<br />#include "SkinH.h"<br />#pragm原创 2011-02-16 20:14:00 · 3462 阅读 · 2 评论 -
纯SDK实现双缓冲绘图与普通绘图差别演示
先大致介绍一下WINDOWS下的绘图原理:我们在 Windows 环境下看到各种元素,如菜单、按钮、窗口、图像,从根本上说,都是“画”出来的。这时的屏幕,就相当于一块黑板,而 Windows 下的各种 GDI 要素,如画笔、画刷等,就相当于彩色粉笔了。我们在黑板上手工画图时,是一笔一划的,电脑亦然。只不过电脑的速度比手工快的太多,所以在我们看起来好像所有的图形文字都是同时出现的。普通绘图方式的局限上述绘图方式我们暂且称之为普通绘图方式吧。虽然这种方式能满足相当一部分的绘图需要,但是当要绘制的对象太复杂,尤其原创 2011-01-19 20:57:00 · 4263 阅读 · 6 评论 -
Callback函数详解
<br />2010年的最后一天了,转载一篇自己认为还不错的文章与大家分享。希望对大家有所帮助。<br /> <br />一,回调函数<br /><br />我们经常在C++设计时通过使用回调函数可以使有些应用(如定时器事件回调处理、用回调函数记录某操作进度等)变得非常方便和符合逻辑,那么它的内在机制如何呢,怎么定义呢?它和其它函数(比如钩子函数)有何不同呢?<br /><br />使用回调函数实际上就是在调用某个函数(通常是API函数)时,将自己的一个函数(这个函数为回调函数)的地址作为参数传递给那个函数转载 2010-12-31 22:18:00 · 25700 阅读 · 4 评论 -
对WM_NCHITTEST消息的了解+代码实例进行演示
这个消息比较实用也很关键,它代表非显示区域命中测试。这个消息优先于所有其他的显示区域和非显示区域鼠标消息。其中lParam参数含有鼠标位置的x和y屏幕坐标,wParam 这里没有用。Windows应用程序通常把这个消息传送给DefWindowProc,然后Windows用WM_NCHITTEST消息产生与鼠标位置相关的所有其他鼠标消息。通俗的讲从消息产生消息。case WM_NCHITTEST:return (LRESULT)HTNOWHERE;以上代码能禁用窗口的所有显示区域和非显示区域鼠标消息,也就是当原创 2010-12-16 22:22:00 · 11477 阅读 · 0 评论 -
Windows消息编程
本文主要包括以下内容:1、简单理解Windows的消息2、通过一个简单的Win32程序理解Windows消息3、通过几个Win32程序实例进一步深入理解Windows消息4、队列消息和非队列消息5、WM_COMMAND和WM_NOTIFY6、MFC的消息映射7、消息反射机制1、简单理解Windows的消息消息,就是指Windows发出的一个通知,告诉应用程序某个事情发生了。举个例子来说,鼠标单击某应用程序的一个按钮。这时,Windows(操作系统)给应用程序发送这个消息,通知应用程序该按钮被点击,应用程序将转载 2010-12-11 18:10:00 · 2750 阅读 · 11 评论 -
WM_CLOSE、WM_DESTROY、WM_QUIT, SENDMESSAGE ,POSTMESSAGE
1、发送消息SendMessage、PostMessagePostMessage将消息放入消息队列后马上返回,而SendMessage直到窗口过程处理完消息后才返回 2、三个消息的区别WM_CLOSE: 在系统菜单里选择了“关闭”或者点击了窗口右上角的“X”按钮,你的窗口过程就会收到WM_CLOSE。DefWindowProc对 WM_CLOSE的处理是调用DestroyWindow。当然,你可以不让DefWindowProc处理,而是自己处理,例如询问用户是否保存更改等。如果用户选择“取消”,你忽略此消转载 2010-12-08 14:26:00 · 5448 阅读 · 0 评论 -
UNICODE 编程入门
<br />简介<br /> 如果你编写的程序是针对非英语国家的用户,如中国、日本、东欧和中东地区,那么你一定要熟悉 UNICODE 字符集。尤其是用 Visual C++/MFC 编写针对上述国家和地区的用户的程序时,如果你想让自己的应用程序得到更广泛的用户,那么必须考虑代码 UNICODE 的兼容性,也就是说它既在 ASCII 模式下运行 ,也能在UNICODE 模式下运行。本文将介绍 UNICODE 的一些基本编程知识,澄清很多人(包括我自己)在这个问题上存在的模糊认识。对于任何使用 Visua转载 2010-11-28 12:00:00 · 829 阅读 · 2 评论 -
SDK实现带工具栏、状态栏的窗口程序
创建一个工具栏2个函数可以用,CreateToolbarEx或者CreateWindowEx.这里用后者。用CreateWindowEx需要指定窗口类为TOOLBARCLASSNAME,初始化为没有包含任何按钮。MSDN中也说了它属于公共控件(common control),需要使用InitCommonControlsEx初始化。可以用2个消息来增加按钮。分别是TB_ADDBUTTONS,TB原创 2011-12-13 11:03:53 · 5252 阅读 · 3 评论