Re: [問題] Win32 Thread中存取GUI元件的問題

看板Programming作者 (三億兩千萬大散戶)時間18年前 (2006/07/31 22:01), 編輯推噓1(102)
留言3則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《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)

07/31 23:12, , 1F
感謝~ XD
07/31 23:12, 1F

07/31 23:12, , 2F
剛剛發現一篇文章 也可以解決問題
07/31 23:12, 2F

07/31 23:13, , 3F
07/31 23:13, 3F
文章代碼(AID): #14pWr5hY (Programming)
文章代碼(AID): #14pWr5hY (Programming)