- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1.3?窗口是怎样建成的
*************************************************** 本文由小鸟飞飞整理发表 samboy@ ** 首发网站:蓝丽网 ** 其他网站转载请保留以上信息,谢谢! ? *************************************************** 现在我们用SDK生成一个Windows窗口,希望大家先把这个看明白了,以后我会根据这个程序来介绍MFC的封装思想。 不妨简单 地将窗口看做带有边界的矩形区域。除文字处理程序中的文档窗口或者弹出提示有约会信息的对话框等这些最普通的窗口外,实际上还有许多其它类型的窗口。命令 按钮、文本框、选项按钮都是窗口。Windows的思想是一切皆为窗口。 一个通常的Windows程序都有窗口,通过窗口,用户可以 对应用程序进行各种操作。反之,应用程序可以通过窗口收集用户的操作信息,如在窗口上移动鼠标,按下键盘。可以说,窗口是应用程序和用户之间交互的界面, 沟通的桥梁,联系的纽带。所以窗口的编写与管理在Windows程序中占有重要的地位。 首先我们要先写下WinMain函数,还记得 这个吧?:)int APIENTRY WinMain(HINSTANCE hInstance,? ? ? ? ? HINSTANCE hPrevInstance,? ? ? ? ? LPSTR ? lpCmdLine,? ? ? ? ? int ? ?nCmdShow){// 第一步:设计窗口// 第二步:注册窗口// 第三步:创建窗口// 第四步:显示窗口// 第五步:消息循环}第一步:设计窗口 一个完整的窗口具有许多特征,包括光 标(鼠标进入该窗口时的形状),图标,菜单,背景色等。产生窗口的过程类似汽车的生产过程,在生产汽车前,必须先在图纸设计好该车型(选择搭配汽车的各个 部件),并要为这种新设计好的车型起个名称,如“奔驰200”。以后,便可以生产“奔驰200”这款汽车了,可以按照这个型号生产若干辆汽车,同一型号的 车,可以具有不同的颜色。 产生一个窗口前,也必须设计好窗口(指定窗口的那些特征)。窗口的特性是由一个 WNDCLASS 结构体进行定义的。参看MSDN,WNDCLASS定义如下:typedef struct _WNDCLASS {?UINT ?style;?WNDPROC lpfnWndProc;?int ? cbClsExtra;?int ? cbWndExtra;?HANDLE hInstance;?HICON ?hIcon;?HCURSOR hCursor;?HBRUSH hbrBackground;?LPCTSTR lpszMenuName;?LPCTSTR lpszClassName;} WNDCLASS;style 成员指定了这一类型窗口的样式。比较典型的取值有: CS_NOCLOSE,这一类型的窗口没有关闭按钮,请实验体会。 CS_VREDRAW,当改变窗口的垂直方向上的高度时,将引发窗口重画。窗口的重画过程好比汽车重新喷漆一样,汽车车身上原有的文字与图案,如锐信培 训中心的字样将被擦除。同样,当窗口重画时,窗口上原有的文字和图形将被擦除。如果没有指定该值,当垂直方向上拉动窗口时,窗口不会重画,窗口上原有的 文字和图形将被保留。 CS_HREDRAW,当改变窗口的水平方向上的宽度时,将引发窗口重画。 CS_DBLCLKS,设置该, 可以接受到用户双击的消息。其他的设置值请参阅MSDN,在一些特殊的场合可能要用到这些置。提示: 在我们 的程序中经常要用到一类变量,这个变量里的每一位(bit)都对应某一种特性。当该变量的某位为1时,表示有该位对应的那种特性,当该位为0时,即没有那 位所对应的特性。当变量中的某几位同时为1时,就表示同时具有那几种特性的组合。一个变量中的哪一位代表哪种意义,不容易记忆,所以我们经常根据特征的英 文拼写的大写去定义一些宏,该宏所对应的数值中仅有与该特征相对应的那一位(bit)为1,其余的bit都为0。我们再次使用goto definition就能发现 CS_VREDRAW=0x0001,CS_HREDRAW=0x0002,CS_DBLCLKS=0x0008,CS_NOCLOSE=0x0200。 他们的共同点就是只有一位为1,其余位都为0。如果我们希望某一变量的数值即有CS_VREDRAW特性,又有CS_HREDRAW特性,我们只需使用 (|)操作符将他们相组合,如style=CS_VREDRAW|CS_H
文档评论(0)