fangyukuan

永无止境的追求...追求卓越!!!

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

进程的实例句柄

加载到进程地址空间的每个可执行文件或DLL文件均被赋予一个独一无二的实例句柄(基地址)。可执行文件的实例作为(w)WinMain的第一个参数hinstExe来传递(可执行文件的映像加载到的基地址是由链接程序决定的。)。

 

对于加载资源的函数调用来说,通常都需要该句柄的值。例如,若要从可执行文件的映象来加载图标资源,需要调用下面这个函数:

HICONLoadIcon( HINSTANCE hinst, PCTSTR pszIcon);

LoadIcon的第一个参数用于指明哪个文件(可执行文件或D LL文件)包含你想加载的资源。

 

注意: HMODULE 与HINSTANCE是完全相同的对象。之所以存在两个数据类型,原因是在16位Windows中,HMODULE 和HINSTANCE用于标识不同的东西。

 

下面的GetModuleHandle函数返回可执行文件或DLL文件加载到进程的地址空间时所用的句柄/基地址:

HMODULEGetModuleHandle( PCTSTR pszModule);

 

进程的前一个实例句柄

如前所述,C/C++运行期启动代码总是将NULL传递给(w)WinMain 的hinstExePrev 参数。该参数用在16位Windows中,并且保留了(w)WinMain的一个参数,目的仅仅是为了能够容易地转用16位Windows应用程序。决不应该在代码中引用该参数。由于这个原因,我总是像下面这样编写(w)WinMain 函数:

int WINAPI WinMain(
HINSTANCE hinstExe,
HINSTANCE, PSTR pszCmdLine,
int nCmdShow);

由于没有为第二个参数提供参数名,因此编译器不会发出“没有引用参数”的警告。

 

本文地址:http://www.cnblogs.com/fangyukuan/archive/2010/08/31/1814262.html

 

posted on 2010-08-31 23:54  fangyukuan  阅读(791)  评论(0编辑  收藏  举报