[問題] VC++ mfc內多執行緒

看板C_and_CPP (C/C++)作者 (修)時間15年前 (2011/06/07 12:42), 編輯推噓0(004)
留言4則, 2人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VS2008 / VC++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) MFC 問題(Question): 使用Afxbeginthread(Data_handler, NULL);後 在UINT __cdecl Data_handler(LPVOID pParam)中 要如何取得原執行緒之doc類別的指標? 餵入的資料(Input): 預期的正確結果(Expected Output): pDoc得到正確的指標,並可以順利存取到原執行緒之doc物件 錯誤結果(Wrong Output): 執行到 static CQuoteTesterDoc* pDoc= (CQuoteTesterDoc*)(pMDIFrame->GetActiveDocument()); 之後會出現:http://sunto.cc/d/4508 的錯誤碼 程式碼(Code):(請善用置底文網頁, 記得排版) UINT __cdecl Data_handler(LPVOID pParam){ static CFrameWnd* pFrame = (CFrameWnd*)(AfxGetApp()->m_pMainWnd); static CFrameWnd* pMDIFrame= (CFrameWnd*) (pFrame->GetActiveFrame()); static CQuoteTesterDoc* pDoc= (CQuoteTesterDoc*)(pMDIFrame->GetActiveDocument()); ... ... } 補充說明(Supplement): 第一次在這邊po文請大家多多指點,有不詳盡的地方再請指出 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.124.3.17

06/07 20:13, , 1F
wincore.cpp 裡面有說明 不可以這樣用
06/07 20:13, 1F

06/08 23:51, , 2F
tyx...謝謝你 但是要改用甚麼方法呢?
06/08 23:51, 2F

06/14 16:02, , 3F
CWnd 不能跨 thread 使用
06/14 16:02, 3F

06/14 16:04, , 4F
其他非 UI thread 可以 PostMessage(HWND 給 UI thraed
06/14 16:04, 4F
文章代碼(AID): #1DxQn6f8 (C_and_CPP)
文章代碼(AID): #1DxQn6f8 (C_and_CPP)