初学VC,对句柄这个东西不明,它是什么东西,干什么用的?我看到有窗口句柄、位图句柄、文件句柄,请问这些句柄都是同一种结构吗?那这种结构是什么样的。如果不是同一种结构,请举一两个句柄结构的定义。谢谢!
解决方案 »
- 如何在对话框上添加工具栏?
- CRichEditCtrl 无法相应 NM_DBLCLK 消息 是为什么啊?
- 如何精确计算出一个算法的CPU运行时间?
- 数据库中数据类型:Decimal,bigint,Money,Timestamp 等,和vc++6.0中数据类型的对应关系,如何处理?不够可加分
- 有没有API 可以得到MP3所得能播放的时间的啊?
- 如何在程序中调出chm文件
- 知道一个窗体的句柄,用什么API能得到其上的Label的内容
- dao访问数据库的一个简单问题
- TT浏览器FLASH独立播放大探讨!!!
- 如何将视图中自画的图像存储成BMP或者JPG图片?
- 谁知道恒生投资赢家的五分钟数据(*.NMN)的文件格式.
- Win98访问不了WinXP,不知高手有何高论?
详细的可分为许多种,都是以H开头的。常见的有窗口句柄(HWND),设备描述表句柄(HDC),内存句柄(HMEM),文件句柄,进程句柄,线程句柄,笔的类型句柄(HPEN),字体句柄(HFONT),区域句柄(HRGN)等等。
在Windows系统中,句柄分为三大类:Kernel Handle、User Handle和应用程序自定义的Handle。
Kernel Handle实际上是进程内Kernel对象的指针表索引,Kernel对象包括进程、文件、信号等。但是MS为了掩盖着一事实,在系统启动时生成了一个所谓Obsfucator的值(其实应该是Obfuscator,Microsoft Bugs(R) :),生成Handle后将Handle与这个值异或后返回给应用程序,所以看到的Handle都是一些很大而且毫无意义的数字。这些Handle和索引的对象是由KRNL32.DLL和VMM32.VXD共同管理的,所以称之为Kernel Handle。
User Handle是用来标示窗口、DC等对象的,他们是真实的指针,但指向的并不是对象的开头,有一个偏移量。同样,这些对象是由USER32.DLL管理的。
第三种Handle不过是应用程序自定义的一些索引之类的东东,具体的意义和应用程序相关。
{
HBITMAP hBitmap = (HBITMAP) LoadImage(NULL, _T("start.bmp"), IMAGE_BITMAP,
0, 0, LR_CREATEDIBSECTION | LR_DEFAULTSIZE | LR_LOADFROMFILE);
if( hBitmap == NULL)
return false;
m_bitmap.Attach(hBitmap); // 获取位图指针
}
请注意:HBITMAP就是一个位图句柄
MoveWindow(hwnd,0,0,100,100,true);
其中第一个参数就是你想移动的窗口的句柄,这个值代表了一个窗口,当然你如果在VC环境下编写程序,就可以用窗口类的一个函数实现这个功能:
CWnd.MoveWindow(.....);
在这个方法中,你用不到句柄,因为窗口类已经将句柄值包含在窗口实例中了。不知道你明白了没有:)
http://www.csdn.net/expert/topic/791/791714.xml?temp=.8232996