如何在线程的函数中调用MFC对话框类的变量?

2024-12-14 12:51:48
推荐回答(4个)
回答1:

必须将对话框指针传入线程函数,其后有三种方式可以实现
方法一:中直接调用m_progress.SetPos(ProgressCount);
方法二:可以通过发送自定义消息,让对话框调用m_progress.SetPos(ProgressCount);
方法三:可以把具体实现放在类内部的成员函数(非静态)中,而在线程函数值用对话框指针调用这个函数,这样比较方便。

回答2:

VC中推荐在work thread中不要操作界面,所以你最好重新构思你的程序

回答3:

创建线程时将指针作为参数传入
AfxBeginThread(SendThread, this, NULL);
在线程函数中再强转使用
UINT CMainFrame::SendThread(LPVOID pParam)
{
CMainFrame *pThis = (CMainFrame*)pParam;
...
pThis->m_progress.SetPos(ProgressCount);
...

return 1;
}

回答4:

magicpapacy 正解