[問題] MFC SDI dll問題請益

看板C_and_CPP (C/C++)作者 (超越自己)時間10年前 (2015/10/19 22:47), 10年前編輯推噓0(002)
留言2則, 1人參與, 最新討論串1/1
各位板友大家好,小弟是MFC新手, 目前想做一個MFC dll的SDI子視窗, 父視窗也是SDI視窗,由父視窗AP呼叫此dll。 父視窗及子視窗都是用一般的做法如下.. -- CSingleDocTemplate* pDocTemplate; pDocTemplate = new CSingleDocTemplate( IDR_MAINFRAME, RUNTIME_CLASS(CLogAccessDoc), RUNTIME_CLASS(CMainFrm), // main SDI frame window RUNTIME_CLASS(CLogAccessView)); AddDocTemplate(pDocTemplate); // Parse command line for standard shell commands, DDE, file open CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo); //// Dispatch commands specified on the command line if (!ProcessShellCommand(cmdInfo)) ::AfxMessageBox(_T("ProcessShellCommand Error")); return FALSE; -- 不過在調用過程發現dll的程式碼在「ParseCommandLine(cmdInfo);」會產生錯誤, 追蹤程式碼發現是斷在wincore.cpp的655行ASSERT(pWnd->m_hWnd == NULL); // only do once 也因為這樣,導致衍生自CView類別的自定類別的函式OnCreate無法進入,也就無法顯示 我希望出現的那些TabCtrl..等控制項。 若是將「CCommandLineInfo cmdInfo;」(含)以下的代碼註解,父子視窗是可順利開啟, 但是因此就不會跑衍生自CView類別的自定類別函式OnCreate了.. 查了兩本書發現SDI的用法皆是如此,不需要去new新的Doc或是View, 由CSingleDocTemplate類別去處理後續的訊息, 想請教板上神人是否我的用法有誤呢? 或是有其他方式能解決此問題呢? 謝謝大家。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.230.138.212 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1445266029.A.552.html ※ 編輯: BIAO (61.230.138.212), 10/19/2015 22:54:47

10/20 03:40, , 1F
目前找到原因是m_hWnd有數值,AP有先調用過OnCreate,
10/20 03:40, 1F

10/20 03:42, , 2F
後來dll內又有再調一次其自身框架的OnCreate
10/20 03:42, 2F
文章代碼(AID): #1M9G9jLI (C_and_CPP)
文章代碼(AID): #1M9G9jLI (C_and_CPP)