window SDK学习笔记
文章平均质量分 94
沙漏99
aaaaaa
展开
-
整理了一些windows上的路径操作函数
自己整理了一些windows上的路径操作函数,使用这些函数操作路径将非常方便。 路径截断与合并函数 PathRemoveArgs去除路径的参数PathRemoveBackslash去除路径最后的反斜杠“/”PathAddBackslas转载 2016-06-01 14:12:53 · 896 阅读 · 0 评论 -
3.1.5 窗口的创建
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P50 由于窗口类知识定义了窗口的一般特征,因此基于同一窗口类可以创建许多不同的窗口。在调用 CreateWindow 函数来创建窗口时,可以指定许多与窗口有关的细节信息。 Windows 编程的新手有时容易对窗口类和窗口之间的区别以及为什么窗口的特征不能一次性指定完毕而感转载 2016-08-17 08:06:58 · 208 阅读 · 0 评论 -
Windows 函数调用
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P42 HELLOWIN 调用了至少 18 个 WIndows 函数。下面按照出现顺序一一列出这些被调用的函数(并附有简短描述):LoadIcon 加载图标,以供程序使用。LoadCursor 加载鼠标光标,以供程序使用。GetStockObject 获取一个图形对象。转载 2016-08-17 08:06:23 · 398 阅读 · 0 评论 -
2.1.4 双字节字符集
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P23 迄今为止,我们一直在看 256 个字符的字符集。但是,像中文、日文和韩文的象形文字约有 21 000 个字符。怎样来融合这些语言而同时保持与 ASCII 有着某种程序的兼容性呢? 答案(如果这样说是对的话)在于双字节字符集(DBCS)。DBCS 一开始就是 256转载 2016-08-17 08:05:41 · 2395 阅读 · 0 评论 -
7.2 客户区鼠标消息
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P223 第 6 章已经讲到,Windows 只把键盘消息发送到当前具有输入焦点的窗口。鼠标消息则不同:当鼠标经过窗口或在窗口内被单击,则即使该窗口是非活动窗口或不带输入焦点,窗口过程还是会收到鼠标消息。Windows 定义了 21 种鼠标消息。不过,其中 11 种消息与客户区无关,称为“非转载 2016-08-17 08:04:48 · 648 阅读 · 0 评论 -
7.1 鼠标的基础知识
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P221 Windows 98 支持单键、双键和三键鼠标,并支持利用控制杆或光笔来模拟鼠标。在早期,为了尊重使用单键鼠标的用户,Windows 应用程序都避免使用第二个按钮或第三个按钮。但是,双键鼠标已经成为事实上的标准,因此那种慎用第二个按钮的传统就变得不再合理。的确,第二个按钮现在已经是弹出转载 2016-08-17 08:04:04 · 384 阅读 · 0 评论 -
6.5 插入符号(不是光标)
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P213 当你向程序中输入文本时,通常会有下划线、竖线或方框指示你输入的下一个字符将出现屏幕上的位置。你也许认为这是“光标”,但在编写 Windows 程序时,你必须避免这种习惯。在 Windows 中,它被称为“插入符号”(caret)。“光标”(cursor)特指表示鼠标位置的位图图像,即鼠转载 2016-08-17 08:03:29 · 618 阅读 · 0 评论 -
6.4 键盘消息和字符集
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P192 本章后面的范例程序都是有缺陷的。它们不总是能在所有的 Windows 版本下正确运行。它们的缺陷不是被故意嵌入代码的;的确,也许你永远不会注意到它们。只有在某些不同的键盘语言和布局间转换,以及在多字节字符集的 Windows 远东版上运行时,才会发现它们的缺陷。所以我们不愿称它们为“b转载 2016-08-17 08:02:42 · 633 阅读 · 0 评论 -
6.3 字符消息
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P176 在本章前面讲过,通过转义状态信息可把击键消息转换为字符消息。并且提到,仅仅利用转义状态信息是不够的:还必须知道与国家/地区相关的键盘配置。由于这个原因,你不应该自己完成从击键消息到字符消息的转换。Windows 将为你完成这一任务。在前面你已经看到过下面的代码:转载 2016-08-17 08:01:57 · 263 阅读 · 0 评论 -
6.2 击键消息
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P176 当用户按下一个键时,Windows 将 WM_KEYDOWN 或 WM_SYSKEWDOWN 消息放入具有输入焦点的窗口的消息队列中。当该键被释放时,Windows 把 WM_KEYUP 或 WM_SYSKEYUP 消息放入相应的消息队列中。 键按下键释转载 2016-08-17 08:01:29 · 626 阅读 · 0 评论 -
7.3 非客户区鼠标消息
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P230 到目前为止,所有讨论的 10 种鼠标消息都是发生在窗口客户区内的移动或单击。如果鼠标位于窗口内部除客户区外的其他区域,Windows 就会向窗口过程发送一个“非客户区”鼠标消息。窗口的非客户区包括标题栏、菜单和窗口滚动条。 系统一般不需要用户处理非客户区鼠标消转载 2016-08-17 08:07:37 · 1347 阅读 · 0 评论 -
7.4 程序中的击中测试
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P230 前面曾讨论了 Windows 资源管理器是如何响应鼠标单击和双击消息的。显然,程序(更确切地说,是 Windows 资源管理器所采用的列表视图控件)必须首先准确地判断用户鼠标所指的文件或目录位置。 这就是“击中测试”。正如 DefWindowProc 在处理 WM转载 2016-08-17 08:08:24 · 354 阅读 · 0 评论 -
STL 算法
http://www.cnblogs.com/kzloser/archive/2012/11/02/2751424.html转载 2017-03-13 13:19:39 · 223 阅读 · 0 评论 -
8.4 在状态报告上使用计时器
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P281 本章的最后一个程序我在第 5 章也提及过。我觉得该程序是 GetPixel 函数唯一有用的地方。 WHATCLR 显示了鼠标指针当前所指的热点的 RGB 颜色。[cpp] view plain copy/*-转载 2016-08-17 08:14:02 · 242 阅读 · 0 评论 -
8.3 使用计时器作为时钟
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P271 时钟是计时器最明显的应用,我们来看两个例子:一个是数字时钟,另一个是模拟时钟。8.3.1 数字时钟 DIGCLOCK 程序模拟了 LED 的七段显示形式,显示当前的时间。[cpp] view plain copy转载 2016-08-17 08:13:14 · 988 阅读 · 0 评论 -
8.2 使用计时器的三种方法
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P265 如果程序在整个运行过程中需要一个计时器,在 WinMain 函数中或处理 WM_CREATE 消息时,调用 SetTimer 函数:在离开 WinMain 函数时或是处理 WM_DESTROY 消息时,调用 KillTimer 函数。基于调用 SetTimer 参数的不同,可才采取以下转载 2016-08-17 08:12:27 · 1622 阅读 · 0 评论 -
8.1 计时器的基本知识
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P263 你可调用 SetTimer 函数为自己的 Windows 程序分配一个计时器。SetTimer 包含一个无符号整型参数,该参数指定了时间间隔的长短,为一毫秒(millisecond)到 4294967295 毫秒(将近 50 天)。这个参数也表示 Windows 给程序发送 WM_TI转载 2016-08-17 08:11:45 · 563 阅读 · 0 评论 -
第 8 章 计时器
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P263 Windows 计时器是一种输入设备,每到一个指定的时间间隔,它都会周期性地通知应用程序。程序告诉 Windows 这个时间间隔的长度,例如“每 10 秒种提醒我一次”。Windows 就会反复地向程序发送 WM_TIMER 消息,以表示该时间间隔已经过去。 Wi转载 2016-08-17 08:11:10 · 415 阅读 · 0 评论 -
7.6 鼠标的滚轮
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P255 “设计一个更好的捕鼠器,人们自然会不辞辛苦来到你的家门前。”我的母亲曾经这样教导我,不知不觉中阐释了 Emerson 的思想。当然,而今设计一个更好的“鼠标”也许更有价值。 微软的 IntelliMouse 系列鼠标增加了传统鼠标的功能,在两个按钮中间 添加了一个转载 2016-08-17 08:10:20 · 344 阅读 · 0 评论 -
7.5 捕获鼠标
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P249 通常,只有当鼠标指针位于窗口的客户区或非客户区时,窗口过程才接收鼠标消息。而当鼠标处于窗口范围之外时,一个程序也可能需要接收鼠标消息。如果是这种情况,那么该程序可以“捕获”鼠标。别担心,这只“老鼠”不会咬人。7.5.1 设计一个矩形 为了理解为什么要捕获转载 2016-08-17 08:09:09 · 245 阅读 · 0 评论 -
6.1.4 击键和字符
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P175 应用程序从 Windows 接收的关于键盘事件的消息可分为击键和字符两种。这与你看待键盘的两种方式是一致的。 首先,你可以认为键盘是键的集合。键盘上仅有一个键表示为“A”。按下此键是一次击键,释放此键也认为是一次击键。同时键盘也是能产生可显示字符或者控制字符的输入转载 2016-08-17 08:00:50 · 194 阅读 · 0 评论 -
6.1.4 击键和字符
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P175 应用程序从 Windows 接收的关于键盘事件的消息可分为击键和字符两种。这与你看待键盘的两种方式是一致的。 首先,你可以认为键盘是键的集合。键盘上仅有一个键表示为“A”。按下此键是一次击键,释放此键也认为是一次击键。同时键盘也是能产生可显示字符或者控制字符的输入转载 2016-08-17 08:00:17 · 233 阅读 · 0 评论 -
3.2.2 队列消息和非队列消息
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P60 前面提过 Windows 将消息发送给一个窗口,意思是说 Windows 调用了该窗口的窗口过程。但是,一个 Windows 程序同时还具有一个消息循环用户从消息队列中检索和分发消息,其中检索消息是通过调用 GetMessage 实现的,而分发消息是通过调用 DispatchMessag转载 2016-08-16 13:45:32 · 556 阅读 · 0 评论 -
4.1.2 有效矩形和无效矩形
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P65 尽管窗口过程必须能够在收到 WM_PAINT 消息时更新整个客户区,但通常它只需要更新其中的一部分,最常见的是更新其中的一个矩形区域。最明显的例子是当一个对话框覆盖了客户区的一部分时:当对话框被关闭时,只有先前被覆盖的那个矩形部分需要重新绘制。 需要重新绘制的部分被转载 2016-08-16 13:46:32 · 349 阅读 · 0 评论 -
4.2.1 设备环境
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P66 如前所述,句柄不过是一个数值,Windows 内部使用该数值确定一个对象。用户从 Windows 获取一个句柄,然后用于其他函数。设备环境句柄是程序窗口使用 GDI 函数的“通行证”。有了设备环境句柄,就可以随心所欲地绘制你的客户区。 设备环境(也被简称为 DC)实转载 2016-08-16 13:47:24 · 251 阅读 · 0 评论 -
4.3 滚动条
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P82 滚动条是图形用户界面中最好的特性之一。它们很容易使用,并且提供了很好的视觉效果。当需要显示的内容超过窗口的客户区时,不管是文字、图像、表格、数据库记录或者是网页,都可以使用滚动条。 滚动条既可以垂直放置(将内容上下移动),也可以水平放置(左右移动)。你既可以用鼠标单转载 2016-08-16 13:48:30 · 708 阅读 · 0 评论 -
4.4 效果更好的滚动
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P91 SYSMETS2 的功能良好,但是他的效率太差,不足以成为其他程序的范本。下面,我们将示范一个更有效的程序。最令人瞩目的是这个新版本的程序将不会使用我们已经讨论过的 4 个滚动函数。相反的,它将使用 Win32 API 中独有的一些新函数。4.4.1 滚动条信息函数转载 2016-08-16 13:49:31 · 238 阅读 · 0 评论 -
5.2.5 色彩 ABC
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P91 只能显示黑色像素和白色像素的视频显示器要显示每个像素只需要一位的内存。彩色显示器的每个像素却需要多个位的内存。位数越多,可表示的色彩越多;更精确一点,2 的位数次方就是它可以表示的不同色彩数目。 真彩(full color)视频显示器有每像素 24 位的分辨率转载 2016-08-16 13:51:32 · 277 阅读 · 0 评论 -
5.2 设备环境
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P103 开始绘图之前,首先让我们在第 4 章的基础上更严谨的讨论一下设备环境。 如果希望在图形输出设备(比如屏幕或者打印机)上绘制图形,必须首先获取设备环境(即 DC)的句柄。当 Windows 把这个句柄交给你的程序,Windows 同时也就给予你使用这个设备的权限。接转载 2016-08-16 13:50:33 · 275 阅读 · 0 评论 -
3.1.11 WM_PAINT消息
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P56、P64 WM_PAINT消息在 Windows 编程中极其重要。当窗口的客户区的部分或全部“无效”且必须“更新”时,应用程序将得到此通知。这也就意味着窗口必须被“重绘”。 但何种情况下客户区会变为无效?当窗口被首次创建时,整个客户区都是无效的,因为此时应用程转载 2016-08-16 13:40:27 · 234 阅读 · 0 评论 -
大写标识符
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P43一些数值常量的前缀,前缀表明该常量所属的一般类别。前缀含义CS(Category Styel)类风格选项CW (Create Window)创建窗口选项DT (Draw Text)文本绘制选项IDI (ID转载 2016-08-16 13:36:07 · 518 阅读 · 0 评论 -
Windows程序设计第五版——源代码002之SCRNSIZE.c
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P34[cpp] view plain copy/*-------------------------------------------------------- SCRNSIZE.c -- Displays screen size in a me转载 2016-08-16 13:42:59 · 555 阅读 · 0 评论 -
3.1.12 WM_DESTROY 消息
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P58 WM_DESTROY 是另外一个非常重要的消息。该消息表明 Windows 正处在依照用户的命令销毁窗口的过程中。当用户单击【关闭】按钮或从程序的系统菜单中选择【关闭】时,该消息将会发出。 HELLOWIN 通过调用函数 PostQuitMessage 来对 WM_转载 2016-08-16 13:41:41 · 292 阅读 · 0 评论 -
6.1.3 队列和同步
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P175 当用户按下和释放键盘上的一个键时,Windows 和键盘设备驱动程序将硬件扫描码转换为格式化后的消息。但是,这些消息并不立即被放入应用程序消息队列,而是由 Windows 把这些消息存储在系统消息队列中。系统消息队列是一个单独的消息队列,它被 Windows 用来初步存储用户从键盘转载 2016-08-16 14:03:22 · 191 阅读 · 0 评论 -
5.6 矩形、区域和裁剪
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P161 Windows 还有其他几个使用 RECT(矩形)结构和区域的绘图函数。一个区域指的是屏幕上的一块空间,它由矩形、多边形和椭圆组合而成。5.6.1 处理矩形 下面三个绘图函数需呀一个指向矩形结构的指针:[cpp] view p转载 2016-08-16 14:02:30 · 2546 阅读 · 0 评论 -
5.5 GDI 映射模式
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P144 到目前为止,所有的范例程序都是相对于客户区左上角坐标并以像素为单位来绘制的。这是默认的状况,但这并非唯一的选择。有一个称为“映射模式”(mapping mode)的设备环境属性,它能影响几乎所有在客户区绘制的图形。和映射模式紧密相关的还有 4 个其他的设备环境属性,分别为窗口原点(wi转载 2016-08-16 14:01:37 · 409 阅读 · 0 评论 -
5.4.2 用画刷填充内部
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P142 Rectangle、RoundRect、Ellipse、Chord、Pie、Polygon 和 PolyPolygon 函数绘制的图形内部会使用设备环境的当前画刷(有时也称为图案(pattern))来填充。画刷是一个 8 * 8 像素的很小的位图,Windows 在水平方向上和垂直方向转载 2016-08-16 14:00:33 · 373 阅读 · 0 评论 -
5.4.1 Polygon 函数和多边形填充模式
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P138 前面已讨论过 5 个区域填充函数,Polygon 是第 6 个画带边框线并填充图形的函数,这个函数的调用类似于 Polyline 函数的调用:[cpp] view plain copyPolygon (hdc, apt, iCount转载 2016-08-16 13:59:47 · 10659 阅读 · 0 评论 -
5.3.8 绘图模式
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P136 显示器上所显示的线条外观也受定义在设备环境中绘图模式的影响。设想画一条直线,其颜色由画笔的颜色和画线显示区域的共同决定。你能够使用同一支画笔在白色表面上绘制出黑色的线条,在黑色的表面上绘制出白色的线条,同时不必知道表面的确切颜色。这样对你有用吗?通过设定绘图模式,这些功能都是可以做到的转载 2016-08-16 13:59:00 · 530 阅读 · 0 评论 -
画笔
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P1315.3.5 使用现有画笔 调用本节介绍的任何一个画线函数时,Windows 都会使用当前选入设备环境的“画笔”来绘制直线。画笔决定了线条的颜色、宽度和样式,样式可以是实线、点线或者虚线。画笔的默认设备环境 BLACK_PEN。该画笔会绘制一条实心的宽度为 1 个像素的黑色线条转载 2016-08-16 13:57:43 · 347 阅读 · 0 评论