存档

文章标签 ‘SDK’

wsprintf居然对缓冲区有长度限制

2012年12月7日 1 条评论

需要在程序中动态生成一个HTML文件,于是尝试用wsprintfA来进行格式化操作,可是结果却很奇怪,仅仅只能写出来一部分,后来仔细一看,居然是1024个字节,查了一下才知道,wsprintf居然对缓冲区有长度限制,可以改用sprintf函数代替。
另一个奇葩点:好久不用MSDN,最近打开MSDN,老提示“帮助正在更新,可能需要几分钟……”,这个进度条一直在闪动,就是没完没了,还卡CPU。试了N次都是这样,网上有的说需要改注册表,可怎么改都不管用啊!尼玛后来想了好久,发现是因为我把控制面板“区域[......]

继续阅读

SysListView32控件响应鼠标单击消息

2011年4月16日 2 条评论

SysListView32控件就是列表视图控件(MFC里面的CListCtrl就是对SysListView32进行的封装)。如果想知道用户选择了哪个元素,可以这么响应消息(注意,这里是Report风格):

// Coded by 代码疯子
// http://www.programlife.net/
case WM_NOTIFY:
switch (((LPNMHDR)lParam)->code)
{
case N[......]

继续阅读

SDK设置编辑框控件只读属性

2011年4月16日 没有评论

还是在写那个PE文件解析工具。在不少地方需要让编辑框控件只读,而我一直是直接禁用了控件,这样虽然能起到只读的效果,但是整个控件都无法操作了。你无法去复制编辑框里面的文本。
仔细想想不应该。于是找了一下,真有只读属性的设置,可以通过发消息来实现。

EM_SETREADONLY // 消息
wParam = (WPARAM)(BOOL) fReadOnly; // wParam
lParam = 0L; // lParam

其中wParam用于指[......]

继续阅读

分类: Windows SDK 标签: , , ,

神奇的栈溢出

2011年4月12日 4 条评论

最近,我在写一个简单一点的PE文件分析器,也就是把PE里面的一些信息反馈到界面上面来,界面的话模仿了LordPE的编辑器界面。
我觉得要动手去解析这些结构,才会对PE文件有一个更加深刻的了解。
也许有人会问,什么是PE?PE是Windows下可执行程序的一种格式,PE的意思是Portable Executable(可移植的执行体),所有Win32执行体都是用PE文件格式,其中包括SYS, DLL, EXE, COM, OCX等。
作为一个程序员,你可以不了解PE的具体结构,但是如果你能仔细去研究[......]

继续阅读

swprintf和wsprintf

2011年3月24日 没有评论

wsprintf是Windows API,不支持浮点型格式输出;swprintf是C运行时函数,支持浮点型格式化输出。

今天写代码的时候用了wsprintf,老是输出f,各种蛋疼。

分类: C语言 标签: , ,

Win32写的屏幕取色工具

2010年10月15日 没有评论

本文介绍如何通过Windows SDK编程实现鼠标屏幕取色功能,可以将技术迁移到VC/MFC等。几个关键实现:

  • 屏幕取色通过WM_TIMER来实现,而不是WM_MOUSEMOVE,因为后者只能捕获客户区的消息,根本达不到目的。
  • 无标题窗口风格是在CreateWindow的时候设置WS_POPUP风格。
  • 窗口置顶通过SetWindowPos的HWND_TOPMOST来实现。
  • 屏幕取色原理:获取桌面DC,然后GetPixel获取RGB颜色,然后通过GetRValue, GetGValue, Get[......]

继续阅读

Win32 API获取桌面DC并画图

2010年10月10日 没有评论

使用Windows SDK来对桌面DC进行画图,其实很简单,但是也有需要注意的地方。
 首先,使用GetDesktopWindow来获取桌面窗口句柄,然后就是通过句柄来获取DC了,这里需要注意,要使用GetWindowDC,而不是GetDC.然后就可以对DC进行操作了。这里是在桌面上显示三句话,用到了一些文本显示的GDI函数。
/**************************************************************
* Copyright (C[......]

继续阅读

分类: Windows SDK 标签: , , , ,

QQ抖动效果实现

2010年10月9日 2 条评论

本文所述代码可以实现QQ聊天窗口中的抖动功能,代码很简单,就是几个API的简单应用。
首先,通过GetForegroundWindow获取Z次序顶层窗口的句柄,然后通过GetWindowRect获取这个窗口的屏幕坐标,然后通过MoveWindow来实现窗口的移动,大体思路就是这样。中间为了保证不卡死,需要小小的休眠一下,本程序可以拿来搞恶作剧滴……
想看截图效果……哦,不好意思,动态效果不好截图,自己拿去编译吧。
Windows SDK/W[......]

继续阅读

分类: Windows SDK 标签: , , , ,

BeginPaint GetDC GetWindowDC区别

2010年10月5日 没有评论

BeginPaint和EndPaint用在WM_PAINT消息处理当中;GetDC可以在处理非WM_PAINT消息时获取设备描述表句柄。

BeginPaint返回的设备描述表句柄只能在PAINTSTRUCT结构中指定的矩形范围内绘图,并使该矩形区域有效;GetDC返回的设备描述表句柄可以在整个窗口客户区上绘图,但不使客户区中任何可能的无效区域变得有效。 

GetWindowDC是获取整个窗体的范围(包括标题栏、菜单栏等),而GetDC是获取窗口客户区的返回。