C++ 王牌课件.ppt

  1. 1、本文档共94页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C王牌课件

工程训练——编程实习 课程号:S0601290 杭州电子科技大学 自动化学院 刘 俊 QQ:573105187 Tel506(O) Email: junliu@ 本课程主要内容 授课方式 课程作用、目标 与其他课程的联系 课程要求 考核方式 参考书目 学习方法及注意事项 第一章 VC面向对象程序设计基础复习 1. Visual C++ 6 集成开发环境 1.1 Visual C++ 6 项目和项目工作区 1.2 开发环境的初步实践 调试运行 断点的设置 操作演示 4 面向对象程序设计 功能上的理解: 什么是“句柄”(handle),handle的本意是把柄,把手的意思。是你与操作系统打交道的东东。 举个通俗的例子,比如你考上了大学,入学后,学校(操作系统)会给你一个学生证号。注意,这个号码是学校指定的,你无法自选。 有了这个号码(学生证,假设一证多用)享受学校提供的服务: 如你就可以去图书馆借书,去食堂吃饭,去教室上课等等。 但你不能到食堂里买啤酒,因为学校不允许这种服务。 而在计算机中系统提供的服务就是API调用,你有了HANDLE,就可以理直气壮地向系统提出调用API的服务。 而指针的权力就大多了,有了指针你可以到处去喝酒,打架,学校(操作系统)管不着,所以句柄和指针的区别在于句柄指针调用系统提供的服务。 而句柄虽然是一个能相互区别的号码,但与我们普通的ID号又有区别,普通的ID号是可以由程序员自己定义的,而句柄不行,它是对象生成是系统指定的,是为了区别系统中存在的各个对象,这个句柄不是由程序员符给的。 概念上的理解 1。句柄,是整个windows编程的基础,一个句柄是指使用的一个唯一的整数值,是指一个四字节长的数值,用于标志应用程序中的不同对象和同类对象中的不同的实例,诸如,一个窗口,按钮,图标,滚动条,输出设备,控件或者文件等。 应用程序能够通过句柄访问相应的对象的信息。 2。句柄不是一个指针,程序不能利用它句柄来直接阅读文件中的信息。如果句柄不用在I/O文件中,它是毫无用处的。 3。句柄是windows用来标志应用程序中建立的或是使用的唯一整数,windows使用了大量的句柄来来标志很多对象。 机制上的理解 句柄是指针,一点不假,但是这个指针又与C中的指针有不同之处。因为Windows是一个多任务的系统,其内存是可以移动的,这样的话如果某一时刻有一个指针指向一块内存,之后的某个时刻却被系统移走了,如果你再用这个指针的话就会出错。 为了解决这一问题,windows在系统专区开一块内存用于存放句柄,这个句柄的值就是一个地址,当这一块内存被移走后,windows就修改这个句柄的值,再访问这块内存时,句柄的值总是有效的。 正因为这样当你使用GlobalAlloc分配的内存时,如果你指定这块内存的属性是固定的,那么它的返回值可以直接给一个指针,如果是可以移动的,返回值就必须给一个句柄,你就必须先GlobalLock后才能使用。 句柄是一个指向指针的指针。即:在windows程序设计中,句柄仅是一个应用程序用来识别某些事情的数字。 Windows是一个以虚拟内存为基础的操作系统。在这种系统环境下, Windows内存管理器经常在内存中来回移动对象,依此来满足各种应用程序的内存需要。对象被移动意味着它的地址变化 了。如果地址总是如此变化,我们该到哪里去找该对象呢? 为了解决这个问题,Windows操作系统为各应用程序腾出一些内存储地址,用来专门 登记各应用对象在内存中的地址变化,而这个地址(存储单元的位置)本身是不变的。Windows内存管理器在移动对象在内存中的位置后,把对象新的地址告知这个句柄地址来保存。 这样我们只需记住这个句柄地址就可以间接地知道对象具体在内存中的哪个位置。这个地址是在对象装载(Load)时由系统分配给的,当系统卸载时(Unload)又释放给系统 。 句柄地址(稳定)→记载着对象在内存中的地址→对象在内存中的地址(不稳定) →实际对象 ??? 但是,必须注意的是程序每次从新启动,系统不能保证分配给这个程序的句柄还是原来的那个句柄,而且绝大多数情况的确不一样的。假如我们把进入电影院看电影看成是一个应用程序的启动运行,那么系统给应用程序分配的句柄总是不一样,这和每次电影院售给我们的门票总是不同的一个座位是一样的道理。 标识画刷句柄 HBRUSH 标识文件句柄 HFILE 标识画笔句柄 HPEN 标识菜单句柄 HMENU 标识字体句柄 HFONT 标识图标句柄 HICON 标识光标句柄 HCURSOR 标识位图句柄 HBITMAP 标识当前实例句柄 HINSTANCE 标识设备环境句柄 HDC 标识窗口句柄 HWND 说明 句柄

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档