首页计算机书籍操作系统C++与Windows高级编程_张剑编著_7302016666
空白

文档

1369

关注

0

好评

0
PDF

C++与Windows高级编程_张剑编著_7302016666

阅读 999 下载 0 大小 9.84M 总页数 249 页 2023-02-22 分享
价格:¥ 10.00
下载文档
/ 249
全屏查看
C++与Windows高级编程_张剑编著_7302016666
还有 249 页未读 ,您可以 继续阅读 或 下载文档
1、本文档共计 249 页,下载后文档不带www.pdfdz.com水印,支持完整阅读内容。
2、古籍基本都为PDF扫描版,所以文档不支持编辑功能,即不支持文档内文字的复制粘贴。
3、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
4、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
5、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。
第一章从DOS轻松转到Windows如果这个程序在Borland C++的DOS环境下编译,则生成一个D)S程序。建议你这样做,以便比较DOS环境和Easy Win环境的异同。通过上面这个程序,你应该对DOS下屏幕控制有较多的了解。在DOS下,你可以在屏幕的任一点开始显示,这使用函数gotoxy()将光标移到那一点即可。也可以将屏幕上的显示内容清掉,清掉一行或整屏都可以。使用ClrSer()和Clreol()这两个函数即可达到目的。1.3.1 Windows的尴尬当你进入Windows进行编程时,感到惊叹的不仅是近七百个函数(普通C语言库只有一百多个函数),而且对调用这些函数时所需的参数个数感到惊奇,调-一个函数,经常要传递四、五个参数,有的甚至十几个。令人难以记忆,难以掌握。所以,几乎所有的Windows程序员都要在桌面上摆一本程序员参考手册,当在计算机上编制程序时,还要随时查看联机帮助文件,以便寻找某个函数的具体用法。有时候,当你对某个Windows函数的特性不十分了解时,希望先编一个小程序测试它一下。如果是在D)S下,只要包含有这个函数定义的头文件,然后在in()函数中直接调用该函数即可。代码一般不超过十行。这是掌握函数用法,提高自己水平的很有效的方法。但是,在Windows下,即使编一个什么功能都不实现,只具有一个可以关闭的简单窗口的程序,其代码恐怕也已超出了四五十行。有谁会愿意为试验一个函数而去对着屏幕敲四五十行源代码呢?这恐怕只会使人对Windows编程兴趣索然。1.3.2 Windows的事件驱动与函数调用特点那么,为什么会造成这种状况呢?这是因为,Windows是一个消息驱动式的程序设计环境,你编的程序必须具有Windows程序所共有的那些部分.同时,很多Windows函数都要有一个句柄参数,以便操作系统对此函数的行为进行控制。比如,对窗口操作的函数都要有一个窗句柄作为头一个参数,以便操作系统知道是对哪个窗口进行操作,避免对其它窗口的操作,以便实现多任务。几乎所有的GDI函数都有一个HDC句柄参数,以便Windows利用此句柄对该函数的行为加以控制,比如,剪裁,以免绘制操作影响到别的区域等。在Windows中,窗口句柄、实例句柄都是在程序创建过程中得到的,似乎只有按正规的Windows程序来设计,才能获得这些句柄,并把这些句柄参数用在各种函数调用中。那么,难道就没有什么像DOS下实验函数那样方便的方法吗?希望首先获得各种句柄参数,在数十行代码内,然后用这些句柄来实验函数。这是能做到的,答案就是利用Easy Win。Easy Win中已为你做好了消息处理机构,Borland C++在连接你的程序时,如果没有·找到WinMain()入口,则会寻找in()入口并自动连接Easy Win库.那么,在Easy Win中如何获得各项句柄呢?1.3.3获得Windows中的句柄Windows是一个非占先式的操作系统,意思是说,只有应用程序主动让出执行权,程序才有可能切换到另一个程序。而应用程序是以窗口为基础的。一个应用程序拥有一个主窗1,用户和此窗口进行交互操作,操作系统向此窗口发送各种消息。在操作系统中,保存有“个恼口句柄表,其中包含有各个窗口句柄、每个窗口句柄实际上是操作系统数据段中的地址。窗口的数据包括实例句柄,程序窗口函数处理地址等各种数据。可见,只要有了窗!句辆,其它各种参数就都能获得。Windows保存当前活动窗口的窗口句柄,这样,我们就可以获得活动窗口句柄。当-一个Easy Win程序开始执行时,它所创建的窗口成为当前活动窗口,因为这个窗口2取键盘输入等消息.这时,如果用Windows函数GetActive Window()将获得当前活动窗口:,这个窗口活动句柄就是应用程序产生的Easy Win窗,这样,我们所有的问题就都迎1.4 Windows与DOS混合的应用程序我们来研究下面这个demogdi.cpp程序。这个程序有一个菜单,你可以在窗口上产生…个钟表,一个沿窗口四个边沿碰撞的小球,以及用随机颜色在窗口的随机区域位置上画矩形方块。你也许感到奇怪,菜单是怎么加上的呢?Windows是基于消息的操作系统,你自己的消息处理函数是怎么加上的呢?别急,让我们一步步来看。这个程序虽然很不完善,但它段示了Windows编程中的各种技巧,值得研究。程序代码//filename:get.h.get the Easy Win handle;#clude windows.h>HWND hWnd:hWnd=GetActive Window ()//define class TDC,get the window DC,class TDCTD('(HWND hWnd)this->h Wnd=hWnd;hWnd=AGet.hWnd;hDC=GetDC(hWnd);
返回顶部