Handle 是代表系统的内核对象,如文件句柄,线程句柄,进程句柄。
HMODULE 是代表应用程序载入的模块,win32系统下通常是被载入模块的线性地址。
HINSTANCE 在win32下与HMODULE是相同的东西,在Win32下还存在主要是因为win16
程序使用HINSTANCE来区别task。
HWND 是窗口句柄。
HMODULE等同于HINSTANCE
下面是我写的测试代码:
void testfun()
{
typedef int (_stdcall *FUN)(int,int,int);
HMODULE hInst = LoadLibrary(_T("Test.dll"));
if(hInst!=NULL)
{
FUN pFun = (FUN)GetProcAddress(hInst,"TestFun");
if(pFun !=NULL)
{
TestFun();
}
}
else
{
::AfxMessageBox("找不到TestDll");
}
}
将HMODULE hInst = LoadLibrary(_T("Test.dll")) 替换成 HINSTANCE hInst = LoadLibrary(_T("Test.dll"))
编译通过。