我搞了一個MFC 表單用PNG圖片 作按鈕,可以正常使用,可是 我想 把這個表單弄成DLL,注入到 別的行程里面 就出問題,崩掉 不知是和咋回事? 有原始碼 高手 幫我解決下,查了半天 也沒查出啥原因
QQ 271072330
uj5u.com熱心網友回復:
崩潰的時候在彈出的對話框按相應按鈕進入除錯,按Alt+7鍵查看Call Stack即“呼叫堆疊”里面從上到下列出的對應從里層到外層的函式呼叫歷史。雙擊某一行可將游標定位到此次呼叫的源代碼或匯編指令處,看不懂時雙擊下一行,直到能看懂為止。參考WinAPIOverride32源代碼
uj5u.com熱心網友回復:
那你把按鈕程式編譯成dll的檔案 呼叫加斷點 看看 哪里出錯了 具體到哪一行 用趙老師的方法
uj5u.com熱心網友回復:
很有可能是無法找到圖片資源導致加載失敗。需要指定從當前模塊中加載圖片資源
uj5u.com熱心網友回復:
DLL注入的,沒法 看除錯資訊uj5u.com熱心網友回復:
寫日志 附加到行程可以除錯,uj5u.com熱心網友回復:
添加log資訊輸出~uj5u.com熱心網友回復:
dll有原始碼的話,可以用垮行程除錯跟dll的原始碼uj5u.com熱心網友回復:
是不是 資源沒有用 void AfxSetResourceHandle( HINSTANCE hInstResource );uj5u.com熱心網友回復:
By default, MFC uses the resource handle of the main application to load the resource template. If you have an exported function in a DLL, such as one that launches a dialog box in the DLL, this template is actually stored in the DLL module. You need to switch the module state for the correct handle to be used. You can do this by adding the following code to the beginning of the function:AFX_MANAGE_STATE(AfxGetStaticModuleState( ));
uj5u.com熱心網友回復:
在DLL中呼叫對話框使用SHARE DLL 模板
創建對話框類
然后
char* _stdcall msg(char *words,CWnd *cwnd)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
MyDialog dialog;
dialog.DoModal();//模態對話框
//CDialog *dialog=new CDialog;//非模態對話框
//dialogCreate(IDD_DIALOG1);//注意Dll呼叫,只能帶一個引數,具體我也不清楚
//dialog.ShowWindow(SW_SHOW);
return "buffer";
}
uj5u.com熱心網友回復:
寫 log 資訊,這個最簡單明了了。。。轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/125102.html
標籤:界面
