第一讲:认识Windows句柄.docVIP

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第一讲:认识Windows句柄

第一讲:认识Windows句柄 童鞋们,你们还在为了那个黑底白字却不能自己DIY的控制台而困扰吗?你还在为那个死板冷漠的界面而反感吗?从今天开始我们将学着如何使用MFC框架DIY我们自己的控制台,童鞋们再也不用每天对着黑底白字的界面啦! 【控制台程序概述】 要想对控制台进行DIY,我们就需要先对控制台的一些概念有基本的了解。所谓控制台应用程序,就是指那些需要与传统DOS操作系统保持某种程序的兼容,同时又不需要为用户提供完善界面的程序。简单地讲,就是指在Windows环境下运行的DOS程序。一旦控制台应用程序在Windows操作系统中运行后,就会弹出一个窗口。例如下列代码: #include iostream using namespace std; void main() { coutHello Console!endl; } 单击小型编译工具栏中的“Build”按钮或按F7键,系统出现一个对话框,询问是否将此项目的工作文件夹设定源文件所在的文件夹,单击[是]按钮,系统开始编译。 单击小型编译工具栏中的“Execute Program”按钮或按Ctrl+F5键,运行刚才的程序。 程序运行后,弹出下图的窗口: 这就是控制台窗口。 【控制台程序与传统的DOS窗口的区别】 那么控制台程序与传统的DOS程序又有什么区别呢?区别如下: (1) 默认的控制台窗口有系统菜单和标题,它是一个内存缓冲区窗口,缓冲区大小取决于Windows操作系统的分配;而DOS屏幕是一种物理窗口,不具有Windows窗口特性,其大小取决于ROM BIOS分配的内存空间。 (2) 控制台窗口的文本操作是调用低层的Win32 APIs,而DOS屏幕的文本操作是通过调用BIOS的16(10h)中断而实现的。 (3) 默认的控制台窗口可以接收键盘和鼠标的输入信息,设备驱动由Windows管理,而DOS屏幕窗口接收鼠标时需要调用33h中断,且鼠标设备驱动程序由自己安装。 【什么是Windows句柄】 要想对控制台进行操作,我们就必须要认识什么是句柄,句柄,英文名称为Handle。顾名思义,就好像我们炒菜用的勺子的勺子柄一样。一个句柄是指使用的一个唯一的整数值,即一个4字节(64位程序中为8字节)长的数值,来标识应用程序中的不同对象和同类中的不同的实例,诸如,一个窗口,按钮,图标,滚动条,输出设备,控件或者文件等。应用程序能够通过句柄访问相应的对象的信息,但是句柄不是指针,程序不能利用句柄来直接阅读文件中的信息。如果句柄不在I/O文件中,它是毫无用处的。 句柄是Windows用来标志应用程序中建立的或是使用的唯一整数,Windows大量使用了句柄来标识对象。 在Windows的世界中,所有的界面元素都含有一个固定的句柄! 【定义Windows句柄】 如果我们需要对某一个句柄的界面元素,例如我们的控制台窗口进行操作,我们就必须要获得该窗口的句柄,这有些类似于我们要想使用勺子就必须握住勺子的勺子柄。在MFC中我们使用句柄类型HANDLE定义变量保存句柄,当然在使用HANDLE类型之前你需要在程序中包含Windows.h头文件。例如: HANDLE handle;//定义一个句柄 【获取控制台句柄】 在MFC中我们可以通过GetStdHandle函数获取界面元素的句柄,控制台的句柄在Windows.h中已经明确定义,记名为:STD_OUTPUT_HANDLE,即标准输出句柄。当然,这很好理解。所谓的输出实际上就是将需要输出的字符串写入到标准输出设备文件(在C/C++中,硬件资源也是使用文件的形式进行管理的),而标准输出设备就是指控制台的窗口,也就是我们平时所说的屏幕。 下面的实例说明了获取控制台句柄的步骤: #include Windows.h #include iostream using namespace std; void main() { HANDLE handle = NULL;//定义一个句柄变量 handle = GetStdHandle(STD_OUTPUT_HANDLE);//获取控制台句柄 if(handle != NULL) { cout获取句柄成功!endl; wcout句柄号:handleendl; } else cout获取句柄失败!endl; } 运行效果如下: 【常见的句柄类型】 MFC中常见的标准句柄如下表: 句柄变量 说明 STD_OUTPUT_HANDLE 标准输出设备句柄 STD_INPUT_HANDLE 标准输入设备句柄 STD_ERROR_HANDLE 标准错误句柄 【关闭句柄】 当然,当我们不需要对该窗口进行任何操作时,我们应该释放该句柄。释放该句柄的主要原因是因为HANDLE类型实际上是一个v

文档评论(0)

hhuiws1482 + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:5024214302000003

1亿VIP精品文档

相关文档