討論區快速選單
知識庫快速選單
傑米的攝影旅遊筆記 網路投保旅行平安險
[ 回上頁 ] [ 討論區發言規則 ]
MFC SDI dll問題請益
更改我的閱讀文章字型大小
作者 : yishiang0217(奕翔)
[ 貼文 134 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 39 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2015/10/19 下午 10:48:30
各位板友大家好,小弟是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類別去處理後續的訊息,
想請教板上神人是否有其他方式能解決此問題呢?

謝謝大家。
作者 : sflam(Raymond)討論區板主 Visual C++ .NET卓越專家VC++一代宗師新手入門優秀好手資訊類作業求救頂尖高手C++一代宗師貼文超過4000則
[ 貼文 4945 | 人氣 9172 | 評價 32290 | 評價/貼文 6.53 | 送出評價 142 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人yishiang0217註記此篇回應為最佳解答 2015/10/21 下午 09:00:00
單從敘述是無法看出真正問題的.

但如果你用 MFC 來做 DLL 給另一個 MFC 的 EXE 來用, 這個 DLL 必須是 MFC extension DLL. 你有沒有這麼做?

你有沒有 export 你 DLL 的 class?

你的 .exe 怎麼 link 你 DLL 的 .lib?
作者 : kuolung(kuolung)
[ 貼文 151 | 人氣 1414 | 評價 130 | 評價/貼文 0.86 | 送出評價 39 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人yishiang0217註記此篇回應為很有道理 2015/10/21 下午 09:36:58
照理說 dll 應該沒有 commamdinfo 的
你可不可再詳述 你 dll 的產生流程
作者 : yishiang0217(奕翔)
[ 貼文 134 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 39 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2015/11/27 下午 03:58:11
謝謝兩位板友,

問題已解決!我沒有用擴充dll,而是選一般的MFC DLL。

這...會有問題嗎@@
作者 : sunyear(coco) VC++卓越專家C++頂尖高手貼文超過2000則
[ 貼文 2421 | 人氣 1485 | 評價 6060 | 評價/貼文 2.5 | 送出評價 5 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人yishiang0217註記此篇回應為最佳解答 2015/11/30 上午 10:55:50
>我沒有用擴充dll,而是選一般的MFC DLL。
>這...會有問題嗎@@
如果沒有要export class應該OK。
 板主 : 青衫 , Raymond
 > Visual C++ - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - Visual C++ - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
Visual C++
1 青衫 11070 
2 Raymond 10090 
3 Clier 7630 
4 小約翰 2500 
5 Cog 2030 
6 coco 1870 
7 aming 1410 
8 牧童哥 1400 
9 r2109 1380 
10 Akira 1350 
Visual C++
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2019 程式設計俱樂部 http://www.programmer-club.com.tw/
0.1416016