精通Windows编程
文章平均质量分 89
Windows编程技术重难点解析和深入剖析
文大侠666
专注安全领域,擅长Go/C++,玩点大数据。
展开
-
深入探索ScrollWindow
最近做WIN32 API开发时发现对ScrollWindow的一些工作原理并不是太清楚,于是做了相关研究,记载下来和大家共同学习。首先在WM_CREATE中获取系统字符的宽度和高度case WM_CREATE: //获取系统字符的宽度和高度 cxChar = LOWORD(GetDialogBaseUnits()) ; cyChar = HI原创 2012-07-29 15:07:56 · 13978 阅读 · 8 评论 -
Windows中使用CRT函数检查内存泄露和溢出
微软通过crtdbg库提供了强大的内存溢出和泄露检测,本文针对这一技术分析了原理,同时详解crtdbg库的使用,给出笔者实现的一个crtdbg库的封装,让你程序从此不再有泄露和溢出。原创 2016-03-12 21:56:14 · 3257 阅读 · 0 评论 -
DLL获取当前文件目录和DLL调试方法
GetModuleFileName可以获得指定模块的路径,如果传入NULL,则输出所在进程exe的路径,因此在DLL中要想获得当前DLL的路径,必须获得DLL的实例。这样我们才能得到当前DLL的路径,据此本文讲解如何获得模块句柄的四种方法。原创 2016-03-12 22:27:53 · 5343 阅读 · 0 评论 -
深入解析Windows窗口创建和消息分发
在纯粹的Window32 SDK编程时代,人们还可以搞懂整个Windows窗体创建和消息的流通过程,但是在现在各种框架的包装下很多在Window32 SDK下很明显易懂的东西显得不是那么简单了。本文力图去繁求简,教你看懂所有框架的基本构造,希望看完本文,再去看常见的MFC/WTL等框架时,不会再觉得有任何的不适。原创 2016-04-17 23:40:35 · 10962 阅读 · 1 评论 -
谈一谈属性页和Tab控件
最近给新带的一个小师弟布置了一个小作业:很简单就是有三个Tab页面,每个Tab页面有1个编辑框,在第一个和第二个编辑框界面各输入一个数字,在切换第三个Tab时编辑框内显示前两个Tab页的编辑框输入数字的和。本来只是为了锻炼他对控件的应用,以为很简单,可是小师弟反应不知道如何在将第1、2个Tab的值传递到第三个Tab页面,我想可能新手容易在这里产生困惑,在此记下来供有同样问题的新手学习,同时讲解了用原创 2014-01-07 13:27:12 · 7660 阅读 · 3 评论 -
1.自动关机软件1.0-自动开机时如何获得全路径
该定时关机主要是三种定时模式(仅定时一次,每天一次和每周一次)和三种定时操作(定时关机,定时重启和定时注销)可以将其最小化到托盘或隐藏在后台运行,设置好以后按“设置定时”将使得定时选择按钮不可用,只有按“取消定时”后方能再重新设置定时参数,为了保证定时模式“每天一次”和“每周一次”能够正常关机,必须将关机的各种参数写到配置文件中去,这样才能让关机再开机后打开软件(在本软件中设置为开机启动)还能够“原创 2012-03-29 22:18:51 · 1561 阅读 · 0 评论 -
2.实验室打卡精灵2.0-单实例化、开机启动、托盘操作、程序启动时隐藏主窗口
老规矩,上一张图片最近对实验室打卡精灵做了一些优化,基本上达到了最初设想的功能。现在的功能包括:1.自定义早上、中午、下午、晚上的打卡时间2.软件单实例化,即如果已经运行了一次再次运行会弹出“应用程序已经在运行”的提示3.软件可选择开机自动启动4.软件开始的时候提醒打卡,如果选择了开机自启动可以实现开机时候提示打卡5.关机的时候提示打卡原创 2013-12-22 10:59:35 · 2588 阅读 · 3 评论 -
3.取色精灵V2.0-非模态对话框自建消息队列、VS2008风格对话框、使用Common Controls、悬浮透明窗口、使用SLIDER控件
取色精灵主要用于屏幕取色主要界面:取色框取色设置软件设置取色历史在这里记下一些主要和通用功能的实现1.非模态对话框自建消息队列在本程序中主界面是非模态对话框,如果在WinMain函数中直接使用CreateDialog函数创建非模态对话框然后ShowWindnow发现对话框秒退,这是因为非模态对话框是没有自己的消息队列的原创 2014-04-03 22:34:23 · 2107 阅读 · 0 评论 -
VC6命令行编译配置
对于大多数在windows上写windows C/C++应用程序的人可能用的都是微软提供的VC++6.0或Visual Studio集成开发环境,但是对想为了更好地理解程序编译链接过程和习惯如linux般在命令行下工作的人来说,我们也可以配置使用命令行编译程序。事实上,基本的程序编译链接工具为一个编译器和链接器——编译器负责把C/C++代码编译成目标二进制代码(对微软编译器一般生成.obj文件原创 2013-08-30 10:11:12 · 9263 阅读 · 1 评论 -
GDI编程注意点-1
最近接触GDI编程比较多,就把常见的技巧和注意点整理成一个系列吧,希望对大家有帮助。原创 2016-05-22 21:53:38 · 1408 阅读 · 0 评论 -
3. GDI+ Bitmap和GDI HBITMAP互转
本文详细的讲解了带透明度的HBITMAP和Bitmap的转换,解决常见的Bitmap转HBITMAP背景变浅,HBITMAP转Bitmap背景变黑的问题,并演示了如何输出HBITMAP和Bitmap的每行像素,所有代码封装成了类,可以直接在生产环境中使用。原创 2017-10-21 15:05:35 · 10951 阅读 · 0 评论 -
2. GDI+图像的加载和保存
GDI只提供了加载和保存BMP图像的方法,对于现代化UI显示显然是不够的。GDI+提供了常用图像格式(BMP/TIFF/JPG/PNG/GIF等)的加载和保存,基于编码器/解码器的设计有利于进一步扩展,但是也存在一些坑,本文就这些加以详细说明,并给出一个封装类,可用于实际生产环境使用。原创 2017-10-17 21:45:51 · 1317 阅读 · 0 评论 -
1.GDI+ 常用方法详解
作为Windows图形系统基准的GDI存在诸多不足:Alpha通道支持较弱,不支持高级图像功能,抗锯齿能力差等等。为了解决这鞋问题,微软推出GDI+,使用非常方便,满足大多数场合需求。本文演示了常见GDI+函数使用。原创 2017-10-15 20:30:36 · 2913 阅读 · 0 评论 -
Windows平板 区分当前是鼠标点击还是触摸
演示如何在鼠标响应详细中判断当前用户是通过鼠标点击还是通过触摸完成当前动作,据此可以最大程度兼容传统Windows程序,同时保证触摸体验效果。原创 2017-10-15 18:31:53 · 4535 阅读 · 0 评论 -
一个有趣的多线程问题
师弟问了个非常有趣的多线程问题,之前没有关注,这里写下自己的心得。对于如下代码:#include #include #include UINT WINAPI Fun1Proc(LPVOID lpParameter);UINT WINAPI Fun2Proc(LPVOID lpParameter);int index1=0;int index2=0;void mai原创 2015-04-03 22:30:20 · 1637 阅读 · 0 评论 -
说一说ASCII和Unicode
关于字符编码这个展开来说有太多东西了,这里主要是想说一说最常说的ASCII和Unicode字符编码的问题,这样至少你在用相关函数的时候,可以搞明白参数的真正含义。 ASCII编码计算机就是0和1的世界,所有的东西都是0和1演变而来,对字符来说,也是如此,每个字符在计算机内存中便是就是数字转换成的二进制0、1组合,这个数字就称为该字符的编码。最常见的就是ASCII编码了,整个码表对应...原创 2015-03-21 09:57:59 · 11631 阅读 · 2 评论 -
深入Windows窗体原理及控件重绘技巧
之前有学MFC的同学告诉我觉得Windows的控件重绘难以理解,就算重绘成功了还是有些地方不明白,我觉得可能很多人都有这样的问题,在这里我从Windows窗体的最基本原理来讲解控件的WM_DRAWITEM重绘和子类化重绘,如果你有类似的疑惑希望这篇文章可以帮你解惑。原创 2013-12-29 13:46:35 · 30281 阅读 · 10 评论 -
深入了解Windows句柄到底是什么
总是有新入门的Windows程序员问我Windows的句柄到底是什么,我说你把它看做一种类似指针的标识就行了,但是显然这一答案不能让他们满意,然后我说去问问度娘吧,他们说不行网上的说法太多还难以理解。今天比较闲,我上网查了查,光是百度百科词条“句柄”中就有好几种说法,很多叙述还是错误的,天知道这些误人子弟的人是想干什么。这篇文章中我们来详细探讨一下Windows中的句柄到底是什么,希望可以解开广大程序员的心中疑惑。原创 2013-12-30 11:02:23 · 99225 阅读 · 28 评论 -
为什么使用剪切板时都用GlobalAlloc分配内存
我在使用剪切板时,发现通用的都是使用GlobalAlloc来分配内存,我就想不是说在Win32中GlobalAlloc和LocalAlloc是一样的那为什么不用LocalAlloc呢,原谅我的好奇心吧,对此我研究了一番,如果你也有此疑问,可以看一看。原创 2014-01-02 11:04:24 · 11824 阅读 · 5 评论 -
深入windows的关机消息截获-从XP到Win7的变化
之前写了一个软件用于实验室的打卡提醒,其中一个重要的功能是在关机之前提醒当天晚上是否已经打卡。之前我是在WM_ENDSESSION中弹出一个模态对话框来提醒,在XP中基本工作正常,在Win7中大多数时候工作正常,但是有时候会出现不提醒现象。我想这中间是不是有什么玄机,Windows的关机方案从XP到Win7到底发生了什么变化,如何进行有效的截获Windows关机消息。对此,我搜寻了MSDN和网上论坛结合自己的测评给出一个完善的描述和解决方案,如果你有类似的需求,可以参考这篇文章。原创 2014-01-12 15:09:29 · 9226 阅读 · 4 评论 -
98年的VC6到08年的VS2008-从atoi的用法差别看UNICODE的使用
由于平时写的较多的是工业设备程序,所以用的XP+VC6比较多,最近写一个小程序,用上了VS2008。之前也用过很长时间的VS2008,没出什么大问题,但是今天将之前在VC6上写的一个工作正常小接口程序拿过来直接用居然不行。自认为一直很注意C++语法标准的问题,也比较清楚VC6和VS2008的差别,可是试了很长时间都没发现问题,最后解决了问题发现是UNICODE的问题。在这里记下问题,希望对遇到原创 2013-12-17 22:03:47 · 4780 阅读 · 2 评论 -
Windows 中GDI、设备描述表和位图
在Windows中,所有的图形和图像显示操作都是通过GDI(Graphic Device Interface)模块完成,,而GDI的显示都是由设备描述表(Context Device,简称DC)来完成的,设备描述表同显示驱动程序打交道,显示驱动程序再同显示硬件打交道,最终得到指定的显示效果。基本所有的书提到设备描述表时都告诉我们把设备表看成一个虚拟对象,所有显示操作同它打交道即可。诚然,在写程序的原创 2014-03-28 19:38:56 · 4183 阅读 · 0 评论 -
Windows DIB文件操作详解-5.DIB和调色板
本文详述了带调色板的DIB的读取、显示操作,通俗解释了调色板是什么和什么情况下会用到。在附带的下载链接中提供了一个完整实现的DIB的操作库,这个操作库考虑了各种位图格式的兼容和不标准位图的兼容,可做技术研究用。原创 2014-06-17 11:31:03 · 3745 阅读 · 0 评论 -
Windows DIB文件操作详解-4.使用DIB Section
Windows将DIB转换成DIB Section既提高了显示效率和性能,又可以直接操作像素点。本文首先讲解DIB Section的存储和显示原理,然后演示了如何创建和显示DIB Section、获取DIBSECTION和Color Table。原创 2014-06-15 12:32:21 · 6140 阅读 · 0 评论 -
Windows DIB文件操作详解-3.DDB转DIB
本博文讲解了DDB转DIB的函数GetDIBits的使用方法和应用,给出了屏幕截图保存到磁盘上的代码和完整的仿QQ截图软件的源代码。原创 2014-05-25 19:53:23 · 3485 阅读 · 2 评论 -
Windows DIB文件操作详解-2.DIB转DDB
上一节讲到显示DIB的显示时需要将文件内容督导内存zho原创 2014-05-25 19:08:37 · 2015 阅读 · 0 评论 -
Windows DIB文件操作详解-1.DIB的读入、保存和显示
本文以主流的DIB 格式演示了DIB的读入、保存和显示,没有考虑兼容情况且减少了错误处理,演示的代码在大部分情况下是适用的,只是为了起抛砖引玉的作用。关于DIB的详细描述当推Petzold的《Windows 程序设计》的“与设备无关的位图”一章,这一章描述非常详细,但是个别地方有些晦涩,结合本文来看可以加深理解。原创 2014-05-19 17:07:55 · 7247 阅读 · 0 评论 -
Win32控件-ToolTip的使用
最近在MFC中使用ToolTip时有诸多疑惑,查阅了不少资料,仔细研究了MSDN文档,这里使用Windows API演示ToolTip的使用步骤和注意事项,对理解ToolTip的MFC封装有帮助。原创 2014-05-30 21:29:59 · 10047 阅读 · 0 评论