[問題] 為何在自製DLL裡Create dialog之後,它 …
遇到的問題: (題意請描述清楚)
小弟自行用VC++6製作了一個Dll,叫作DllWrapper
專案是選擇其它Win32程式也可以呼叫的那種DLL專案
裡面有一個class是專案自行產生的,名稱為CDllWrapperApp,繼承CWinApp
我的DllWrapper目的是要能產生一個Dialog視窗,其ID為IDD_SOCKETDLG
當外部呼叫DllWrapper的介面函數時,會轉call CDllWrapperApp
的某函數去產生一個Dialog,程式碼如下:
m_pSocketDlg = new CSocketDlg(m_szRootPath, m_hSocket);
if (!m_pSocketDlg->Create(IDD_SOCKETDLG, NULL))
{
.....
return False;
}
.....
希望得到的正確結果:
能正確產生Dialog的hWnd,代表產生視窗成功
程式跑出來的錯誤結果:
現在的問題是,在new CSocketDlg時,除錯視窗就可以看到m_pSocketDlg
有位址數值出現,但是其hWnd還是0x00000000,往下執行到Create時,
hWnd也是一樣為0
我有把Create的第2個參數NULL改為呼叫該DLL的視窗的m_pMainWnd(從外部
的呼叫程式傳進DLL內),也是沒有作用
請問各位高手,是不是有什麼地方沒有注意到?
還是我的專案骨架選錯了?
開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux)
VC++ 6, WinXP
有問題的code: (請善用置底文標色功能)
補充說明:
我是用LoadProcAddress()、GetProcAddress()的方式呼叫DLL
但也有試過用.lib + extern "C" __declspec(dllimport) int funcname();
的方式,但一樣是不行的
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.147.4.130
→
04/01 21:52, , 1F
04/01 21:52, 1F
→
04/02 08:06, , 2F
04/02 08:06, 2F
→
04/02 08:35, , 3F
04/02 08:35, 3F
=>非常感謝,我加上AFX_MANAGE_STATE(AfxGetStaticModuleState());
之後,就可以產生dialog了。而我的res是DLL專案本身的resource.h所定義的,
不是exe裡的,所以應該這樣就對了吧。
→
04/02 10:01, , 4F
04/02 10:01, 4F
※ 編輯: Naleiya 來自: 122.147.4.130 (04/02 10:52)