作者meltice (三亿两千万大散户)
看板Programming
标题Re: [问题] Win32 Thread中存取GUI元件的问题
时间Mon Jul 31 22:16:02 2006
※ 引述《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)
1F:推 kevinCosner:感谢~ XD 140.113.139.97 07/31 23:12
2F:→ kevinCosner:刚刚发现一篇文章 也可以解决问题 140.113.139.97 07/31 23:12