摸索了很长时间,先在有些感觉。
1 句柄和指针。 指针只是一个地址(逻辑上的,给人的感觉就是只顾上头,而顾不上尾巴,而句柄好像能指
向一个块),而句柄手中握有资源,有人也把句柄作为MFC中的一种智能指针,这个我很赞同。句柄可以访问进
程,资源,通过调用API或MFC的函数来改动,比指针更安全。句柄是对指针更高层次的抽象。
2 对象和句柄。对象是类的一个实例化。这个两个概念放在一起,最初是我在看到《VC++深入详解》里
对CMenu对象使用Detach()时。
有这样的一段程序:
SetMenu(NULL);
//
先将原来的菜单拆下
CMenu menu; // 对象
menu.LoadMenu(IDR_MAINFRAME);
SetMenu( & menu); // 装上对象
menu.Detach(); // 就是这里,书上说是将对象和句柄相分离
CMenu menu; // 对象
menu.LoadMenu(IDR_MAINFRAME);
SetMenu( & menu); // 装上对象
menu.Detach(); // 就是这里,书上说是将对象和句柄相分离
如果没有用Detach()的话,会出现错误,因为menu是一个局部变量,在销毁之前还没有和
IDR_MAINFRAME脱离关系,而IDR_FRAME作为一项资源,是全局存在的。
将对象和句柄分开。menu肯定是对象,那么IDR-MAINFRAME就是句柄了。IDR_MAINFRAME是资源句柄,
资源是存在的,一直。对象可以消灭,资源相对来说是全局的,菜单对象只是一种手段来让我们可以
轻松的管理菜单资源,就像一个修车车间,菜单资源就像是车子,把车子装入车间,我们就可以改造
它,改造完成以后,我们再把车子从车间里送出来。
我们是通过菜单对象来修改菜单资源的。
3 资源的ID和句柄。现在的理解是:资源的ID号即是一个句柄。嘿嘿。