创建可用于对话框的线程
Creating threads that work with dialog boxes
我需要在使用一些对话框的MFC应用程序中使用AfxBeginThread创建一个线程,但由于线程函数在类中,我必须将其设置为静态的,然后我不能使用任何控件,因为它们不是静态的,即使我将它们设置为静态,我也会遇到一些链接器错误。
有人能告诉我实现这一点的正确方法是什么吗?我真的需要解密静态控件吗?或者有其他方法可以做到这一点吗?
这是错误(无静态)
error C2228: left of '.AddString' must have class/struct/union
带静态:
unresolved external symbol "public: static class CListBox CsearchDlg::m_musicList" (?m_musicList@CsearchDlg@@2VCListBox@@A)
线程函数应该接收一个参数,该参数作为pParam
传递给AfxBeginThread
,您可以在那里传递指向类的指针,并从线程函数调用您想要的任何类成员函数。我就是这么做的。
类似这样的东西(伪代码):
CWinThread* thread = AfxBeginThread(
MyClass::ThreadFunc,
this);
MyClass::ThreadProc(LPARAM pParam)
{
MyClass cls = dynamic_cast<MyClass*>(pParam);
cls->RealThreadFunc();
};
从辅助线程"触摸"UI通常不是一个好主意。最好将所有UI交互留给主线程,只将消息从辅助线程发布到主线程。
相关文章:
- 如何抓取指向Qt中弹出对话框的指针,该对话框阻止了QTest中的UI线程
- 如何在另一个线程中关闭 MFC 模式对话框并获取对话框返回值?
- 如何从另一个线程关闭对话框?QT
- 当主GUI线程被阻塞时,如何从工作线程创建无模式对话框
- 在std ::线程中打开MFC对话框
- 如何在对话框编辑框中显示来自 UI 线程类 Run() 函数的字符串
- 显示Q对话框时出现QT线程问题
- 关闭其他线程的对话框后无法从主窗口聚焦
- 关闭MFC对话框时多线程对象被破坏
- 线程退出时 DLL 中的 MFC 无模式对话框被销毁
- 在 MFC 对话框和自己的线程上的 OpenGL 控件之间传递消息
- 从线程 MFC 将返回值发送到对话框
- 工作线程使主线程MFC的对话框处于非活动状态
- 单击对话框关闭按钮时,正确中止线程
- 在c++中对来自其他正在运行的线程的消息对话框进行建模
- 进度条在多个对话框与线程
- MFC主UI线程工作和模态对话框
- 访问线程(MFC)中的主对话框变量
- 从Q线程影响Q对话框
- 创建可用于对话框的线程