万里独行的快活林
万里独行的快活林
我不去想.是否能够成功.既然选择了远方.便只顾风雨兼程、我不去想.身后会不会袭来冷雨寒风.既然目标是地平线.留给世界的就只能是背影!
博客信息
博主:Lo7e4L 不在线! 
BLOG日历
<< 2010 三月 >>
31 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 1 2 3

栏目分类
博客登录
用户:
密码:
最新文章
更多>>>
留言
友情博客
标签列表
博客搜索
博客音乐
日志存档
友情链接
统计信息
  • 访问:89783 次
  • 今日访问:8次
  • 日志: 276篇
  • 评论: 14 个
  • 留言: 2 个
  • 建站时间: 2004-10-8
博客成员
最近访客




首页 留言板 加为友情博客 天涯博客 博客家园 免费注册 帮助
2009-12-15 星期二(Tuesday) 晴
建立更好的滚动


SYSMETS2动作良好,但它只是模仿其它程序中的滚动条,并且效率很低。很快我将示范一个新的版本,改进它的不足。也许最有趣的是这个新版本不使用目前所讨论的四个滚动条函数。相反,它将使用Win32 API中才有的新函数。

滚动条信息函数


滚动条文件(在/Platform SDK/User Interface Services/Controls/Scroll Bars中)指出SetScrollRange、SetScrollPos、GetScrollRange和GetScrollPos函数是「过时的」,但这并不完全正确。这些函数在Windows 1.0中就出现了,在Win32 API中升级以处理32位参数。它们仍然具有良好的功能。而且,它们不与Windows程序设计中新函数相冲突,这就是我在此书中仍使用它们的原因。

Win32 API介绍的两个滚动条函数称作SetScrollInfo和GetScrollInfo。这些函数可以完成以前函数的全部功能,并增加了两个新......

Lo7e4L 发表于 2009-12-15 13:21 | 正常 | 分类:资料 | 评论: 0 | 浏览:17| 送小红花 推荐指数:0

2009-12-15 星期二(Tuesday) 晴
滚动条


滚动条是图形使用者接口中最好的功能之一,它很容易使用,而且提供了很好的视觉回馈效果。您可以使用滚动条显示任何东西--无论是文字、图形、表格、数据库记录、图像或是网页,只要它所需的空间超出了窗口的显示区域所能提供的空间,就可以使用滚动条。

滚动条既有垂直方向的(供上下移动),也有水平方向的(供左右移动)。使用者可以使用鼠标在滚动条两端的箭头上或者在箭头之间的区域中点一下,这时,「卷动方块」在卷动列内的移动位置与所显示的信息在整个文件中的近似相关位置成比例。使用者也可以用鼠标拖动卷动方块到特定的位置。图4-5显示了垂直滚动条的建议用法。


 



图4-5 垂直滚动条


有时,程序写作者对卷动概念很难理解,因为他们的观点与使用者的观点不同:使用者向下卷动是想看到文件较下面的部分;但是,程序实际上是将文件相对于显示窗口向上移动。Windows文件和表头文件标识符是依据使用者的观点:向上卷动意味着朝文件的开头移动;向下卷......

Lo7e4L 发表于 2009-12-15 13:21 | 正常 | 分类:资料 | 评论: 0 | 浏览:12| 送小红花 推荐指数:0

2009-12-15 星期二(Tuesday) 晴
GDI 简介


要在窗口的显示区域绘图,可以使用Windows的图形设备接口(GDI)函数。Windows提供了几个GDI函数,用于将字符串输出到窗口的显示区域内。我们已经在上一章看过DrawText函数,但是目前使用最为普遍的文字输出函数是TextOut。该函数的格式如下:

TextOut (hdc, x, y, psText, iLength) ;

TextOut向窗口的显示区域写入字符串。psText参数是指向字符串的指针,iLength是字符串的长度。x和y参数定义了字符串在显示区域的开始位置(不久会讲述关于它们的详细情况)。hdc参数是「设备内容句柄」,它是GDI的重要部分。实际上,每个GDI函数都需要将这个句柄作为函数的第一个参数。

设备内容


读者可能还记得,句柄只不过是一个数值,Windows以它在内部使用对象。程序写作者从Windows取得句柄,然后在其它函数中使用该句柄。设备内容句柄是GDI函数的窗口「通行证」,有了这......

Lo7e4L 发表于 2009-12-15 13:20 | 正常 | 分类:资料 | 评论: 0 | 浏览:17| 送小红花 推荐指数:0

2009-12-15 星期二(Tuesday) 晴
绘制和更新


在文字模式环境下,程序可以在显示器的任意部分输出,程序输出到屏幕上的内容会停留在原处,不会神秘地消失。因此,程序可以丢掉重新生成屏幕显示时所需的信息。

在Windows中,只能在窗口的显示区域绘制文字和图形,而且不能确保在显示区域内显示的内容会一直保留到程序下一次有意地改写它时还保留在那里。例如,使用者可能会在屏幕上移动另一个程序的窗口,这样就可能覆盖您的应用程序窗口的一部分。Windows不会保存您的窗口中被其它程序覆盖的区域,当程序移开后,Windows会要求您的程序更新显示区域的这个部分。

Windows是一个消息驱动系统。它通过把消息投入应用程序消息队列中或者把消息发送给合适的窗口消息处理程序,将发生的各种事件通知给应用程序。Windows通过发送WM_PAINT消息通知窗口消息处理程序,窗口的部分显示区域需要绘制。

WM_PAINT消息


大多数Windows程序在WinMain中进入消息循环之前的初始化期间都要呼叫函数UpdateWindow。Windows利用这个机会给窗口消息处理程序发送第一个WM_PAINT消息。这个消息通知窗口消息处理程序:必须绘制显示区域。此后,窗口消息处理程序应在任何时刻都准备好处理其它WM_PAINT消息,必要的话,甚至重新绘制窗口的整个显示区域。在发生下面几种事件之一时,窗口消息处理程序会接收到一个WM_PAINT消息:
......

Lo7e4L 发表于 2009-12-15 13:19 | 正常 | 分类:资料 | 评论: 0 | 浏览:15| 送小红花 推荐指数:0

2009-12-15 星期二(Tuesday) 晴
在前一章,您看到了一个简单的Windows 98程序,它在窗口中央,或者更准确地说,在显示区域中央显示一行文字。正如我们学到的,显示区域是整个应用程序窗口中未被标题列、窗口边框,以及可选的菜单列、工具列、状态列和滚动条占据的部分。简而言之,显示区域是窗口中可以由程序任意书写和传递视觉信息的部分。

对于程序的显示区域,您几乎可以为所欲为,只不过您不能假定窗口大小是某一特定尺寸,或者在程序执行时其大小会保持不变。如果您不熟悉图形窗口环境的程序设计,这些限制可能会使您感到惊讶:不能再假设屏幕上的一行文字一定有80个字符了。您的程序必须与其它Windows程序共享视讯显示器。Windows使用者控制程序窗口在屏幕上显示的方式。尽管可以建立固定大小的窗口(这对于计算器之类的应用是合理的),但在大多数情况下,使用者应该能够改变应用程序窗口的大小。您的程序必须能够接受指定给它的大小,并且合理地利用这一空间。

这有两种可能的情况。一种可能是,程序只有仅能显示「hello」的显示区域;还有另一种可能,即程序在一个大屏幕、高分辨率的系统上执行,其显示区域大得......

Lo7e4L 发表于 2009-12-15 13:16 | 正常 | 分类:资料 | 评论: 0 | 浏览:17| 送小红花 推荐指数:0

2009-12-15 星期二(Tuesday) 晴
在前两章,程序使用了同一个函数MessageBox来向使用者输出文字。MessageBox函数会建立一个「窗口」。在Windows中,「窗口」一词有确切的含义。一个窗口就是屏幕上的一个矩形区域,它接收使用者的输入并以文字或图形的格式显示输出内容。

MessageBox函数建立一个窗口,但这只是一个功能有限的特殊窗口。消息窗口有一个带关闭按钮的标题列、一个选项图标、一行或多行文字,以及最多四个按钮。当然,必须选择Windows提供给您的图标与按钮。

MessageBox函数非常有用,但下面不会过多地使用它。我们不能在消息框中显示图形,而且也不能在消息框中添加菜单。要添加这些对象,就需要建立自己的窗口,现在就开始。

自己的窗口


建立窗口很简单,只需呼叫CreateWindow函数即可。

好啦,虽然建立窗口的函数的确名为CreateWindow,而且您也能在/Platform SDK/User Interface Services/Windowing/Windows/Window Reference/Window Functions找到此文件,但您将发现CreateWindow的第一个参数就是所谓的「窗口类别名称」,并且该窗口类别连接所谓的「窗口消息处理程序」。在我们呼叫CreateWindow之前,有一点背景知识会对您大有帮助。
......

Lo7e4L 发表于 2009-12-15 13:14 | 正常 | 分类:资料 | 评论: 0 | 浏览:12| 送小红花 推荐指数:0

2009-12-15 星期二(Tuesday) 晴
宽字符和 Windows


Windows NT从底层支援Unicode。这意味着Windows NT内部使用由16位字符组成的字符串。因为世界上其它许多地方还不使用16位字符串,所以Windows NT必须经常将字符串在操作系统内转换。Windows NT可执行为ASCII、Unicode或者ASCII和Unicode混合编写的程序。即,Windows NT支持不同的API函数呼叫,这些函数接受8位或16位的字符串(我们将马上看到这是如何动作的。)

相对于Windows NT,Windows 98对Unicode的支持要少得多。只有很少的Windows 98函数呼叫支持宽字符串(这些函数列在《Microsoft Knowledge Base article Q125671》中;它们包括MessageBox)。如果要发行的程序中只有一个.EXE文件要求在Windows NT和Windows 98下都能执行,那么就不应该使用Unicode,否则就不能在Windows 98下执行;尤其程序不能呼叫Unicode版的Windows函数......

Lo7e4L 发表于 2009-12-15 13:13 | 正常 | 分类:资料 | 评论: 0 | 浏览:20| 送小红花 推荐指数:0

2009-12-15 星期二(Tuesday) 晴
宽字符和 C


对C程序写作者来说,16位字符的想法的确让人扫兴。一个char和一个字节同宽是最不能确定的事情之一。没几个程序写作者清楚ANSI/ISO 9899-1990,这是「美国国家标准程序设计语言-C」(也称作「ANSI C」)通过一个称作「宽字符」的概念来支持用多个字节代表一字符的字符集。这些宽字符与常用的字符完美地共存。

ANSI C也支持多字节字符集,例如中文、日文和韩文版本Windows支持的字符集。然而,这些多字节字符集被当成单字节构成的字符串看待,只不过其中一些字符改变了后续字符的含义而已。多字节字符集主要影响C语言程序执行时期链接库函数。相比之下,宽字符比正常字符宽,而且会引起一些编译问题。

宽字符不需要是Unicode。Unicode是一种可能的宽字符集。然而,因为本书的焦点是Windows而不是C执行的理论,所以我将把宽字符和Unicode作为同义语。

Char数据型态


假定我们都非常熟悉在C程序中使用char数据型态来定义和......

Lo7e4L 发表于 2009-12-15 13:12 | 正常 | 分类:资料 | 评论: 0 | 浏览:14| 送小红花 推荐指数:0


  
页码:1/35  [1][2][3][4][5]:    ↑回到项部