看板 Programming 關於我們 聯絡資訊
※ 引述《kevinCosner (kevin)》之銘言: : 大家好 想請問一下: : 在WIN32 Thread中存取UI的元件時 例如: : void ThreadFunc() : { : CButton* btn = (CButton*)DlgClass::GetDlgItem(IDC_XX); : } : 會出現無法存取非靜態成員的錯誤 : 在.NET中可以藉由把GUI元件改成static的暴力法 : 或是使用invoke / delegate的方式請main process處理 : 但是我在Win32 C++中找不太到類似的用法 Q__Q : 想請問一下如果我要在Thread中針對UI的Text等等做處理 : 有沒有什麼辦法 : 希望可以提供一些簡單的例子讓小弟研讀一下...^^" 謝謝 基本上在thread中存取UI我猜是有問題的 因為我碰過 我用AfxGetMainWnd()->GetDlgItem(...) 結果有時候正常有時候access violation 最後我是用PostMessage的方式處裡才正常運作 還有 ThreadFunc只能存取global/staic變數或函式 當然還有一種方式可以偷吃步 你可以試試看是不是從threadProc中去控制UI會不會有問題 這個我沒試過... CMyClass::threadProc() { //... } StaticThreadProc(void *This) { ((CMyClass *)This)->threadProc(); } CMyClass::beginThread { CreateThread(StaticThreadProc,this); } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.204.133.140 ※ 編輯: meltice 來自: 203.204.133.140 (07/31 22:20)
kevinCosner:感謝~ XD 140.113.139.97 07/31 23:12
kevinCosner:剛剛發現一篇文章 也可以解決問題 140.113.139.97 07/31 23:12
kevinCosner:http://0rz.net/8a1Dx 140.113.139.97 07/31 23:13