《Windows 程序设计》学习之旅
wiljm
任何改正,都是进步
展开
-
《Windows 程序设计(第五版,珍藏版)》第I部分 基础知识 学习总结
一个月左右的时间,终于看完了《Windows 程序设计(第五版,珍藏版)》的第一部分:基础知识。 在这段时间,遇到过很多问题,受到过很多折磨,生活中不可能总是一帆风顺的旅程,我们总会遇到一些不说是狂风暴雨,雷雨交加,却暗流涌动,始终不得宁静的场景。但是,只要你倒下了还有站起来的力量,只要你驻足后还有迈步的勇气,只要你埋头痛哭后还有一往无前的精神,这一切的一切就都不是问题。No p原创 2015-11-20 10:56:05 · 1192 阅读 · 0 评论 -
《Windows 程序设计(第五版,珍藏版)》第I部分 关于图的那些事儿 学习总结
GDI(图形设备接口)是 Windows 图形处理的最重要类库。 初次接触打印机,发现在 Windows 操作系统的基础上,对屏幕进行操作和对打印机进行操作基本没有什么区别。 位图和设备无关位图、位块传输、调色板管理器、逻辑调色板与系统调色板、文本和字体、字体轮廓、路径、图元文件。原创 2016-01-02 14:30:33 · 468 阅读 · 0 评论 -
23.2 WinInet 和 FTP
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P1093 WinInet API 是一些高层函数的集合,主要用于协助程序使用三个最常见的互联网协议:用于 WWW 的超文本传输协议(HTTP)、文件传输协议(FTP)和另一个称为 Gopher 的文件传输协议。WinInet 函数的语法与通常的 Windows 文件操作函数的语法很相似,因而应转载 2016-03-04 16:01:35 · 1336 阅读 · 0 评论 -
23.1 Windows 套接字
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P1081 套接字是美国加利福尼亚大学伯克利分校为了给 UNIX 操作系统添加网络通信支持而开发的一个概念。由他们开发的 API 如今被称为 “伯克利套接字接口” (Berkeley socket interface)。23.1.1 套接字和 TCP/IP 套接字通常与占互联转载 2016-03-04 11:38:17 · 869 阅读 · 0 评论 -
第 23 章 尝试互联网
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P1081 互联网(Internet,也称因特网)由世界各地为数众多的计算机相互连接组成,它是一个执行多种协议以交换信息的大型联结体。互联网近年来重新定义了个人计算机的方方面面。虽然拨号上网信息服务和电子邮件系统在互联网流行之前已经存在,但它们往往局限于字符模式,并且基本上没有相互连通。例如,每个信转载 2016-03-01 12:36:45 · 394 阅读 · 0 评论 -
22.3 MIDI 和音乐
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P1035 乐器数字接口(Musical Instrument Digital Interface, MIDI) 是在 20 世纪 80 年代初期由电子音乐合成器制造商的一个合作组织开发的。MIDI 是各种电子乐器之间及其和计算机之间相互连接的一个协议。它在电子音乐领域是一个极其重要的标准。MIDI转载 2016-02-29 18:04:08 · 5639 阅读 · 1 评论 -
22.2 波形音频 II
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P100022.2.6 数字录音机 Windows 包含了一个叫做 Sound Recorder(录音机)的程序,它可以让你用数字形式录制和播放声音。图 22-3 中所示的程序(RECORD1)不像【录音机】程序那么复杂,因为它没有任何的文件 I/O,也不支持声音的编辑。但是,它的确展示了如何转载 2016-02-20 14:52:45 · 1550 阅读 · 0 评论 -
22.2 波形音频 I
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P989 波形音频(waveform audio)是 Windows 最常用的多媒体功能。波形音频设备能够通过麦克风捕捉声音,将其转换成数字,存放在内存中或以.WAV 扩展名的波形文件的形式存储在磁盘上。随后,这些声音可以被重新播放出来。22.2.1 声音和波形 在深入研究波转载 2016-02-15 11:53:19 · 1602 阅读 · 0 评论 -
22.1 Windows 和多媒体
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P979 从某种意义上来说,多媒体就是通过调用与设备无关的的函数来访问各种硬件。让我们首先来看一下硬件的部分,然后再讲解 Windows 多媒体 API 的结构。22.1.1 多媒体硬件 最常用的多媒体硬件大概就是波形音频设备了,通常被称为声卡。波形音频设备将麦克风输入或其他转载 2016-01-30 12:28:03 · 681 阅读 · 0 评论 -
第 22 章 声音和音乐
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P979 将声音、音乐和视频集成到 Windows 中是一个重大进步。最初对多媒体的支持是在 1991 年时 Windows 中所谓的多媒体扩展。1992 年发布的 Windows 3.1 将多媒体支持作为单独的一类 API。近年来,在 20 世纪 90 年代初还十分少见的 CD-ROM 驱动器和声转载 2016-01-25 09:21:39 · 465 阅读 · 0 评论 -
21.2 关于动态链接库的其他话题
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P974 我前面提到过动态库模块不接收消息。但是,一个库模块可以调用 GetMessage 和 PeekMessage。库模块用这些函数从消息队列中拿到的消息实际上时调用该库函数的程序的消息。一般来说,库为调用它的程序服务——这个规则适用于库模块调用的大部分 Windows 函数。转载 2016-01-24 17:15:58 · 537 阅读 · 0 评论 -
21.1 关于库的基本知识
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P958 如你所知,Windows 程序是一个可执行的文件,它通常创建一个或多个窗口,并使用消息循环来接收用户输入。动态链接库一般不能直接执行,而且它们一般也不接收消息。它们是包含许多函数的独立文件,这些函数可以被应用程序和其他 DLL 调用以完成某些特定的工作。一个动态链接库只有在另外一个模块调用转载 2016-01-24 16:23:31 · 691 阅读 · 0 评论 -
第 21 章 动态链接库
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P958 动态链接库(也称为 DLL,动态库,dynalink 库或库模块)是 Windows 中最重要的结构组件之一。Windows 相关的大多数磁盘文件都是程序模块或动态链接库模块。到目前为止,我们一直都在写 Windows 程序。现在是一窥动态链接库究竟的时候了。你所学到的许多编写应用程序的原转载 2016-01-10 17:09:58 · 364 阅读 · 0 评论 -
3.1.11 WM_PAINT消息
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P56WM_PAINT消息在 Windows 编程中极其重要。当窗口的客户区的部分或全部“无效”且必须“更新”时,应用程序将得到此通知。这也就意味着窗口必须被“重绘”。但何种情况下客户区会变为无效?当窗口转载 2015-10-15 17:20:22 · 486 阅读 · 0 评论 -
Windows程序设计第五版——源代码001之HelloMsg.c
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P13/*-------------------------------------------------------------- HelloMsg.c -- Displays "Hello, Windows 98!" in a message box (c) Charles Petzold转载 2015-10-15 19:10:14 · 1567 阅读 · 0 评论 -
3.1.12 WM_DESTROY 消息
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P58 WM_DESTROY 是另外一个非常重要的消息。该消息表明 Windows 正处在依照用户的命令销毁窗口的过程中。当用户单击【关闭】按钮或从程序的系统菜单中选择【关闭】时,该消息将会发出。 HELLOWIN 通过调用函数 PostQuitMessage 来对 WM_DEST转载 2015-10-15 19:05:49 · 522 阅读 · 0 评论 -
Windows程序设计第五版——源代码002之SCRNSIZE.c
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P34/*-------------------------------------------------------- SCRNSIZE.c -- Displays screen size in a message box (c) Charles Petzold, 1998 ---------转载 2015-10-15 19:12:30 · 612 阅读 · 0 评论 -
3.2.2 队列消息和非队列消息
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P60 前面提过 Windows 将消息发送给一个窗口,意思是说 Windows 调用了该窗口的窗口过程。但是,一个 Windows 程序同时还具有一个消息循环用户从消息队列中检索和分发消息,其中检索消息是通过调用 GetMessage 实现的,而分发消息是通过调用 DispatchMessage转载 2015-10-16 09:43:36 · 511 阅读 · 0 评论 -
4.1.2 有效矩形和无效矩形
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P65 尽管窗口过程必须能够在收到 WM_PAINT 消息时更新整个客户区,但通常它只需要更新其中的一部分,最常见的是更新其中的一个矩形区域。最明显的例子是当一个对话框覆盖了客户区的一部分时:当对话框被关闭时,只有先前被覆盖的那个矩形部分需要重新绘制。 需要重新绘制的部分被称为“无转载 2015-10-16 13:20:19 · 588 阅读 · 0 评论 -
Windows程序设计第五版——源代码003之HELLOWIN.c
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P39/*------------------------------------------------------------ HELLOWIN.c -- Displays "Hello, Windows 98!" in client area (c) Charles转载 2015-10-15 19:15:07 · 680 阅读 · 0 评论 -
4.2.1 设备环境
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P66 如前所述,句柄不过是一个数值,Windows 内部使用该数值确定一个对象。用户从 Windows 获取一个句柄,然后用于其他函数。设备环境句柄是程序窗口使用 GDI 函数的“通行证”。有了设备环境句柄,就可以随心所欲地绘制你的客户区。 设备环境(也被简称为 DC)实际上是转载 2015-10-16 14:10:24 · 605 阅读 · 0 评论 -
4.4 效果更好的滚动
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P91 SYSMETS2 的功能良好,但是他的效率太差,不足以成为其他程序的范本。下面,我们将示范一个更有效的程序。最令人瞩目的是这个新版本的程序将不会使用我们已经讨论过的 4 个滚动函数。相反的,它将使用 Win32 API 中独有的一些新函数。4.4.1 滚动条信息函数转载 2015-10-19 16:20:40 · 425 阅读 · 0 评论 -
4.3 滚动条
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P82 滚动条是图形用户界面中最好的特性之一。它们很容易使用,并且提供了很好的视觉效果。当需要显示的内容超过窗口的客户区时,不管是文字、图像、表格、数据库记录或者是网页,都可以使用滚动条。 滚动条既可以垂直放置(将内容上下移动),也可以水平放置(左右移动)。你既可以用鼠标单击滚动条转载 2015-10-19 09:52:00 · 791 阅读 · 0 评论 -
5.2.5 色彩 ABC
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P91 只能显示黑色像素和白色像素的视频显示器要显示每个像素只需要一位的内存。彩色显示器的每个像素却需要多个位的内存。位数越多,可表示的色彩越多;更精确一点,2 的位数次方就是它可以表示的不同色彩数目。 真彩(full color)视频显示器有每像素 24 位的分辨率(8 位转载 2015-10-20 15:38:18 · 433 阅读 · 0 评论 -
5.2 设备环境
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P103 开始绘图之前,首先让我们在第 4 章的基础上更严谨的讨论一下设备环境。 如果希望在图形输出设备(比如屏幕或者打印机)上绘制图形,必须首先获取设备环境(即 DC)的句柄。当 Windows 把这个句柄交给你的程序,Windows 同时也就给予你使用这个设备的权限。接着,在转载 2015-10-20 12:33:28 · 446 阅读 · 0 评论 -
5.3.4 贝塞尔样条曲线
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P127 英语单词“spline”(曲尺,又称为样条曲线)最初指的是一块可以弯曲的物体,可以是木头、橡皮或金属条,它可以用来在纸张上绘制曲线。例如,如果有一些离散的点,并且想在它们之间画曲线,无论是内插拟合或者外插拟合,都应当首先将这些点描绘在图纸上。接着,固定一个曲尺在这些点上,使用铅笔沿着曲尺绕转载 2015-10-20 18:58:41 · 1178 阅读 · 0 评论 -
画笔
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P1315.3.5 使用现有画笔 调用本节介绍的任何一个画线函数时,Windows 都会使用当前选入设备环境的“画笔”来绘制直线。画笔决定了线条的颜色、宽度和样式,样式可以是实线、点线或者虚线。画笔的默认设备环境 BLACK_PEN。该画笔会绘制一条实心的宽度为 1 个像素的黑色线条。BLA转载 2015-10-21 09:41:02 · 775 阅读 · 0 评论 -
5.4.1 Polygon 函数和多边形填充模式
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P138 前面已讨论过 5 个区域填充函数,Polygon 是第 6 个画带边框线并填充图形的函数,这个函数的调用类似于 Polyline 函数的调用:Polygon (hdc, apt, iCount);其中,参数 apt 是一个 POINT 结构的数组,iCount 是点的个数。如果数组中最转载 2015-10-21 15:44:19 · 4130 阅读 · 0 评论 -
5.3.8 绘图模式
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P136 显示器上所显示的线条外观也受定义在设备环境中绘图模式的影响。设想画一条直线,其颜色由画笔的颜色和画线显示区域的共同决定。你能够使用同一支画笔在白色表面上绘制出黑色的线条,在黑色的表面上绘制出白色的线条,同时不必知道表面的确切颜色。这样对你有用吗?通过设定绘图模式,这些功能都是可以做到的。转载 2015-10-21 11:00:09 · 779 阅读 · 0 评论 -
5.5 GDI 映射模式
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P144 到目前为止,所有的范例程序都是相对于客户区左上角坐标并以像素为单位来绘制的。这是默认的状况,但这并非唯一的选择。有一个称为“映射模式”(mapping mode)的设备环境属性,它能影响几乎所有在客户区绘制的图形。和映射模式紧密相关的还有 4 个其他的设备环境属性,分别为窗口原点(wind转载 2015-10-22 10:53:09 · 778 阅读 · 0 评论 -
6.1.3 队列和同步
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P175 当用户按下和释放键盘上的一个键时,Windows 和键盘设备驱动程序将硬件扫描码转换为格式化后的消息。但是,这些消息并不立即被放入应用程序消息队列,而是由 Windows 把这些消息存储在系统消息队列中。系统消息队列是一个单独的消息队列,它被 Windows 用来初步存储用户从键盘和鼠转载 2015-10-26 09:18:53 · 378 阅读 · 0 评论 -
6.1.4 击键和字符
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P175 应用程序从 Windows 接收的关于键盘事件的消息可分为击键和字符两种。这与你看待键盘的两种方式是一致的。 首先,你可以认为键盘是键的集合。键盘上仅有一个键表示为“A”。按下此键是一次击键,释放此键也认为是一次击键。同时键盘也是能产生可显示字符或者控制字符的输入设备。“转载 2015-10-26 09:29:52 · 416 阅读 · 0 评论 -
5.6 矩形、区域和裁剪
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P161 Windows 还有其他几个使用 RECT(矩形)结构和区域的绘图函数。一个区域指的是屏幕上的一块空间,它由矩形、多边形和椭圆组合而成。5.6.1 处理矩形 下面三个绘图函数需呀一个指向矩形结构的指针:FillRect (hdc, &rect, hBr转载 2015-10-23 09:52:03 · 1192 阅读 · 0 评论 -
6.3 字符消息
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P176 在本章前面讲过,通过转义状态信息可把击键消息转换为字符消息。并且提到,仅仅利用转义状态信息是不够的:还必须知道与国家/地区相关的键盘配置。由于这个原因,你不应该自己完成从击键消息到字符消息的转换。Windows 将为你完成这一任务。在前面你已经看到过下面的代码:while (GetMe转载 2015-10-26 14:25:28 · 516 阅读 · 0 评论 -
6.2 击键消息
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P176 当用户按下一个键时,Windows 将 WM_KEYDOWN 或 WM_SYSKEWDOWN 消息放入具有输入焦点的窗口的消息队列中。当该键被释放时,Windows 把 WM_KEYUP 或 WM_SYSKEYUP 消息放入相应的消息队列中。 键按下键释放转载 2015-10-26 11:27:08 · 715 阅读 · 0 评论 -
5.4.2 用画刷填充内部
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P142 Rectangle、RoundRect、Ellipse、Chord、Pie、Polygon 和 PolyPolygon 函数绘制的图形内部会使用设备环境的当前画刷(有时也称为图案(pattern))来填充。画刷是一个 8 * 8 像素的很小的位图,Windows 在水平方向上和垂直方向上重转载 2015-10-21 16:12:34 · 524 阅读 · 0 评论 -
7.1 鼠标的基础知识
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P221 Windows 98 支持单键、双键和三键鼠标,并支持利用控制杆或光笔来模拟鼠标。在早期,为了尊重使用单键鼠标的用户,Windows 应用程序都避免使用第二个按钮或第三个按钮。但是,双键鼠标已经成为事实上的标准,因此那种慎用第二个按钮的传统就变得不再合理。的确,第二个按钮现在已经是弹出“上转载 2015-10-28 10:06:01 · 600 阅读 · 0 评论 -
6.4 键盘消息和字符集
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P192 本章后面的范例程序都是有缺陷的。它们不总是能在所有的 Windows 版本下正确运行。它们的缺陷不是被故意嵌入代码的;的确,也许你永远不会注意到它们。只有在某些不同的键盘语言和布局间转换,以及在多字节字符集的 Windows 远东版上运行时,才会发现它们的缺陷。所以我们不愿称它们为“bug转载 2015-10-26 15:55:58 · 633 阅读 · 0 评论 -
6.5 插入符号(不是光标)
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P213 当你向程序中输入文本时,通常会有下划线、竖线或方框指示你输入的下一个字符将出现屏幕上的位置。你也许认为这是“光标”,但在编写 Windows 程序时,你必须避免这种习惯。在 Windows 中,它被称为“插入符号”(caret)。“光标”(cursor)特指表示鼠标位置的位图图像,即鼠标指转载 2015-10-27 16:34:24 · 524 阅读 · 0 评论 -
7.2 客户区鼠标消息
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P223 第 6 章已经讲到,Windows 只把键盘消息发送到当前具有输入焦点的窗口。鼠标消息则不同:当鼠标经过窗口或在窗口内被单击,则即使该窗口是非活动窗口或不带输入焦点,窗口过程还是会收到鼠标消息。Windows 定义了 21 种鼠标消息。不过,其中 11 种消息与客户区无关,称为“非客户区消转载 2015-10-28 10:49:42 · 1667 阅读 · 0 评论