C++ DLL调用DIAGLOG显示异常处理

2020-06-22  本文已影响0人  梵蒂冈教主

DLL被其它程序调用时,无法获取自身正确的Handle导致


1、重写调用方法

模态框重写virtual INT_PTR DoModal();

非模态框重写virtual BOOL Create(UINT nIDTemplate);

根据实际调用情况,重写方法

2、重写方法主代码

HINSTANCE hInstOld = AfxGetResourceHandle();

AfxSetResourceHandle(GetSelfModuleHandle());

//方法内代码,一般此处为调用父方法代码

AfxSetResourceHandle(hInstOld);// 重新设置回instance

return XXX;

3、GetSelfModuleHandle方法实现

HMODULE GetSelfModuleHandle(){

MEMORY_BASIC_INFORMATION mbi;

return ((::VirtualQuery(GetSelfModuleHandle, &mbi, sizeof(mbi)) != 0)

      ? (HMODULE) mbi.AllocationBase : NULL);

}

上一篇下一篇

猜你喜欢

热点阅读