句柄即GetSafeHwnd的作用
GetSafeHwnd()和GetSafeHandle()的主要区别:
1.使用者不同:
(1)窗体使用:
GetSafeHwnd()用于获取窗体的安全句柄(即HWND),有了HWND我们就可以方便的对HWND指向的窗体进行所需的操作了;
(2)GDI对象使用:
GetSafeHandle(),用于获取GDI对象的句柄。
注意:在使用指针时强烈建议这么做:
// pSomeWnd 为一个窗体的指针
if ( NULL != pSomeWnd && NULL != pSomeWnd->GetSafeHwnd())
{
// do something.
}
内存句柄与指针的区别:
(1).句柄其实就是指针,但是他和指针最大的不同是:给你一个指针,你可以通过这个指针做任何事情,也许是好事,也许是通过这个指针破坏内存,干一些捣乱的事情。这个我想大家都会碰到过,因为乱用指针可能会导致程序崩溃。 (2).句柄是一些表的索引也就是指向指针的指针。 句柄和指针都是地址,句柄是windows编程的一个关键性的概念,编写windows应用程序总是要和各种句柄打交道。 由于windows是一个多任务操作系统,它可以同时运行多个程序或一个程序的多个副本。这些运行的程序称为一个实例。为了对同一程序的多个副本进行管理,windows引入了实例句柄。windows为每个应用程序建立一张表,实例句柄就好象是这张表的一个索引。 不同之处还在于: |
补充知识:指针和句柄之间的转换
a.由指针获得句柄
CWND* pwnd ;
HWND hwnd ;
hwnd = pwnd-> GetSafeHwnd();
b.由句柄得到指针:
CWND* pwnd = FromeHandle(hmyhandle);
pwnd-> SetWindowText(" hello world!" ) ;
mfc类中有的还提供了标准方法,比如window 句柄 :
static CWND pascal FromHandle( HWND hwnd )
HWND GetSafeHwnd( ) const
getdc函数对系统的相对开销比较大,如果你的程序里使用了几百个getdc函数而又不通过ReleaseDC函数释放的话,那你机器运行速度将是龟速。
Attach在于将HDC与CDC的对象关联起来,并且在Map表中创建一条记录
Detach在于将HDC与CDC的对象去除关联,当然会在Map表中删除这条记录
另外:
函数功能:该函数确定给定的窗口句柄是否标识一个已存在的窗口。
函数原型:BOOL IsWindow(HWND hWnd);
句柄即GetSafeHwnd的作用相关推荐
- 句柄的意义和作用以及句柄和指针的区别
句柄 什么是句柄?首先这个单词听起来就有点怪,只知道有把柄,句柄对应单词是handle,把手,一个门把手可以打开一扇房间的门,句柄是一个特殊的代号,windonw系统可以通过一个特定的句柄打开一个特定 ...
- Windows句柄剖析
1 什么是句柄 句柄的概念: 在系统中指向某个控件或对象的唯一指针(也可叫句柄),系统可以通过这个句柄与所对应的控件或对象交互(控制它).控件或对象与句柄的关系就好比电视机与遥控器,通过遥控器 ...
- Matlab中的函数句柄@
本系列文章由 @yhl_leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/50699990 @是Matlab中的句柄 ...
- mfc vs2013 项目怎么更改类名_VS2010 更改MFC标题及标题栏图标和exe图标
标题及标题栏 图标和 exe 图标 在 VS2010 下新建一个 MFC 的多文档应用程序, 程序默认的标题是 " 文档名 - 工程名 " . 图标默认的是写着 MFC 的三个方块 ...
- Delphi中高级DLL的编写和调用
根据Delphi提供的有关 DLL编写和调用的帮助信息,你可以很快完成一般的 DLL编写和调用的 应用程序.本文介绍的主题是如何编写和调用能够传递各种参数(包括对象实例)的 DLL.例 ...
- keybd_event跟SendMessage,PostMessage模拟键盘消息的区别 z
首先你会发现keybd_event函数中是没有窗口句柄作为参数的,好奇的你一定会觉得很奇怪,那是因为,keybd_event是全局模拟按键的,只对前台窗口(即当前的活动窗口)才可以,但是如果模拟的按键 ...
- 关于Socket和IOCP的一些值得注意的地方
关于Socket和IOCP的一些值得注意的地方 IOCP是一整套高性能的IO操作异步模型,可以用在文件操作也可以用在网络SOCKET操作上面.当用在网络SOCKET上时,在服务器端主要配合Aceept ...
- S3C2440中断跳转分析
2440init.s中断跳转分析 最近准备自己写一个S3C2440的启动代码.参阅了一下2440init.s这一启动代码.发现有很多人对于这个启动代码中的异常,特别是像外部中断这样的异常,到底在244 ...
- keybd_event()使用方法
keybd_event()使用方法 函数说明 函数功能:keybd_event函数模拟一次击键事件.系统可使用这种模拟的击键事件来产生WM_KEYUP或WM_KEYDOWN消息,键盘驱动程序的中断处理 ...
- 【逆向】【Part 3】DLL注入
目录 一.通过自制调试器来理解其原理 1.调试器的工作原理 实现反汇编功能(重点) 重点分析exception_debug_event 重点:1.对调试器程序增加异常处理操作功能,核心API, CON ...
最新文章
- poj3692(二分图最大独立集)
- linux环境变量设置方法总结(PATH/LD_LIBRARY_PATH)
- 【问链-区块链基础知识系列】 第十四课 数字货币交易所的前世、今生和未来(一)
- 关于HTTPS认证,这里解决你所有疑惑
- node mysql查询回调_nodejs 数据库查询回调问题
- 【云计算】Kubernetes、Marathon等框架需要解决什么样的问题?
- javascript 权威指南二
- 「微信小程序」有哪些冲击与机会?
- 前中后序遍历的递归与非递归算法,层序遍历
- 超级计算机运存多少,6GB内存到底能开多少个APP?实测告诉你最终答案
- Android ROM开发(一)——Windows下Cygwin和Android_Kitchen厨房的安装
- 认识客观世界:数学描述与物理意义
- 远程办公常态化,网络安全迫在眉睫,“零信任安全”的风口到了吗?
- 副校长仇旻解密神秘的西湖大学 AI布局有何不同
- 掌握JavaScript中的迭代器和生成器,顺便了解一下async、await的原理
- Matlab中N是什么意思,MATLAB中y=FFT(X,N)中的N是什么意思
- JAVA高考加油,给高考学子加油打气的祝福语
- 痞子衡嵌入式:嵌入式里通用微秒(microseconds)计时函数框架设计与实现
- OGEM Bentonite mud treatment system for Russian client
- XP系统中转移“我的文档”文件夹到其它分区
热门文章
- d3.js——饼状图
- login RPi via serial port
- apache lucene介绍
- 简单的方法完成项目上传到github
- linux root权限_怎样在Linux内核中埋炸弹获取root权限lt;2/2gt;终结篇
- 无法保存关闭文件 苹果电脑 显示正在保存_??Linux文件编辑 - 给你骨质唱疏松
- Layui 数据表格复杂表头
- Mysql将多个查询结果并列显示
- securecrt批量登录linux,SecureCRT批量配置使用会话key
- centos7安装mysql5.7.16_centos7.x编译安装mysql5.7.16