vc精华讲义2010最新

vc精华讲义2010最新

ID:13172968

大小:412.00 KB

页数:77页

时间:2018-07-21

vc精华讲义2010最新_第1页
vc精华讲义2010最新_第2页
vc精华讲义2010最新_第3页
vc精华讲义2010最新_第4页
vc精华讲义2010最新_第5页
资源描述:

《vc精华讲义2010最新》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、在VC++中,对于自定义的菜单,图标,光标,对话框等都是以资源的形式进行管理的,它们的定义与描述存放在资源文件中(扩展名为.rc),资源文件是文本格式,读者可以用notepad.exe打开,阅读里面的信息。在VC++中是以“所见即所得”的方式打开资源文件的,在编辑窗口中看到的和编辑完后的结果即程序运行时的效果。对于每一个资源及资源中的子项都是用一个标识号来标识的,通常称为ID,同一个ID可以标识多个不同的资源。注意区别资源的ID号与句柄的区别,ID号是应用程序指定的,可以在资源还没在内存中产生前指定,也可在设计阶段就指定,基本上是固定的。而句柄则是资源

2、在内存中产生时由操作系统临时安排的,每次产生的句柄可能都不一样,一个ID号标识的资源可在内存中产生多个实例句柄。资源文件中的ID标识符必须在"resouce.h"头文件中用宏定义成一个整数,这样程序中用到的一个ID号标识符实际上就是那个整数。LoadIcon的第二个参数是LPCTSTR类型,用gotodefinition功能发现它实际被定义成CONSTCHAR*,是字符串常量指针,而图标的ID是一个整数。参看msdn中的提示,对于这样的情况我们需用MAKEINTRESOURCE这个宏把资源ID标识符转换为需要的LPCTSTR类型。使用gotodefin

3、ition功能,或在MSDN中都可以看到MAKEINTRESOURCE的定义:#defineMAKEINTRESOURCE(i)(LPTSTR)((DWORD)((WORD)(i)))之所以可以这样做,是因为字符串变量本身代表的就是一个字符数组的首地址,本身就是一个数字。所以字符串变量可以类型转换成整数,反之,一个整数也可以类型转换成字符串型。hCursor成员指定了这一类型窗口的光标句柄,LoadCursor函数可以加载一个光标资源到内存中并返回系统分配给该光标的句柄。除了加载的是光标外,其特点与LoadIcon函数一样。hbrBackground成

4、员指定了这一类型窗口重画时所使用的刷子句柄。当窗口重画时会使用这里指定的刷子去刷新窗口背景。刷子是具有颜色和形状的,我们可以使用GetStockObject返回一个系统刷子,也可以直接使用msdn中提供的宏,如COLOR_WINDOWTEXT,还可以用CreateBrushIndirect函数产生具有一定形状的刷子。由于GetStockObject参数能够返回标准的刷子、笔、字体、调色板等图形设备对象,定义该函数时,是无法确定该函数到底返回的是刷子还是笔,所以该函数返回类型是HGDIOBJECT(图形设备对象的总称)。由于编译器的需要,在这里我们必须H

5、GDIOBJECT转换成HBRUSH。顺便提示:在VC++开发Windows程序中,类型转换的频率非常高,在这有必要重点介绍一下。比如有个函数为“去叫一个人来帮忙”,定义该函数时,其返回值只能是“人”,但实际来的“人”,要么是“男人”,要么是“女人”。即使叫来的是一个“男人”,如果将该函数的返回值直接赋给一个“男人”类型的变量,编译时是没法确定返回的是“男人”,还是“女人”,将不会通过。只有我们写程序的人才知道运行时返回的是“男人”,还是“女人”,我们可以对返回值进行类型转换,以便编译器通过。在类型转换时,程序员要对转换完的后果负责,要确保在内存中存在

6、的对象本身确实可以被看成那种要转换成的类型,如果来的是“女人”,我们将其转换成“男人”后,编译能够通过,但程序运行时将会出错。作者在编码和调试时,总是用意境的方式,仿佛看到变量或对象在内存中的真实布局和状态,以及是如何进行转换的,这样编码时比较容易一气呵成,极少犯错。lpszMenuName成员指定了这一类型窗口的菜单。可见菜单本身不是一个窗口,同图标、光标一样,是窗口的一个元素。不少的人和书都错以为菜单也是一个窗口,其实我们用Spy++实用工具的FindWindow功能就能够区分出桌面上的哪些元素为窗口,哪些不是。lpszMenuName是LPCTS

7、TR类型,需用MAKEINTRESOURCE这个宏把资源ID标识符转换为lpszMenuName需要的LPCTSTR类型。lpszClassName成员指定了这一类型窗口的名称,是字符串变量。与设计一辆新型汽车后,要为该汽车型号指定名称一样,设计了一种新型窗口后,也要为这种新型窗口起个名称。我们先将这里的名称指定成"http://www.it315.org",等会我们将看到如何使用这个名称。设计完WNDCLASS后,需调用RegisterClass函数对其进行注册,以后便可以用CreateWindow函数产生这种类型的窗口窗口了。CreateWindo

8、w函数的定义如下:HWNDCreateWindow(LPCTSTRlpClassName,//

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。