Re: [問題] Win32 Thread中存取GUI元件的問題
※ 引述《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
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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
Programming 近期熱門文章
PTT數位生活區 即時熱門文章