进程的实例句柄
加载到进程地址空间的每个可执行文件或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