如何查看 动态库资源 加载是否正确问题
如何查看 动态库资源 冲突问题 在调用资源前使用
以下是在 dll 中的定义 CLDCControlDialog * CLDCFilesControl::DoModalPropertyDlg03(HWND hParent) { m_pPropertyDlg = new CFilesPropertyDlg2(CWnd::FromHandle(hParent)); }
以下是 EXE 对 dll的调用
CDialog * CLeadShowView::DoModalPropertyDlg03(CLDCControl40 *pCtrl, CWnd *pEdtWnd) { //AFX_MANAGE_STATE(AfxGetAppModuleState()); m_pLDCControlDialog = pCtrl->DoModalPropertyDlg03(this->m_hWnd); }
要判断在dll弹出对话框时,dan当前资源需要做 CLDCControlDialog * CLDCFilesControl::DoModalPropertyDlg03(HWND hParent) { HINSTANCE dll_hInstance = AfxGetResourceHandle(); !!! m_pPropertyDlg = new CFilesPropertyDlg2(CWnd::FromHandle(hParent)); }
CDialog * CLeadShowView::DoModalPropertyDlg03(CLDCControl40 *pCtrl, CWnd *pEdtWnd) { HINSTANCE exe_hInstance = AfxGetResourceHandle(); !!! m_pLDCControlDialog = pCtrl->DoModalPropertyDlg03(this->m_hWnd); }
然后只需要看 dll_hInstance 和 exe_hInstance 区别,如果相同,说明调用资源仍然是exe的资源,
dll_hInstance应该等于 DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved) { }
中的hInstance 参数