给例子:在MFC的工作线程用PostMessage改变多个UI控件文字
时间: 2024-02-13 17:02:00 浏览: 178
在 MFC 工作线程中通过 PostMessage 函数改变多个 UI 控件的文字,可以参考以下示例代码:
```cpp
// 定义消息 ID
#define WM_UPDATE_UI_TEXT WM_USER + 1
// 定义消息结构体
struct UIUpdateMsg {
CString strText1;
CString strText2;
};
// 工作线程中发送消息,改变 UI 控件的文字
void CMyThread::DoWork()
{
// 构造消息结构体
UIUpdateMsg msg;
msg.strText1 = _T("Hello");
msg.strText2 = _T("World");
// 发送消息到 UI 线程
AfxGetMainWnd()->PostMessage(WM_UPDATE_UI_TEXT, 0, (LPARAM)&msg);
}
// 处理消息,更新 UI 控件的文字
LRESULT CMainFrame::OnUpdateUIText(WPARAM wParam, LPARAM lParam)
{
// 获取消息结构体指针
UIUpdateMsg* pMsg = (UIUpdateMsg*)lParam;
// 更新 UI 控件的文字
m_static1.SetWindowText(pMsg->strText1);
m_static2.SetWindowText(pMsg->strText2);
return 0;
}
```
在上面的代码中,我们定义了一个消息 ID WM_UPDATE_UI_TEXT,并定义了一个消息结构体 UIUpdateMsg,用于传递需要更新的文字。在工作线程中,我们构造了一个 UIUpdateMsg 对象,并使用 AfxGetMainWnd 函数获取主窗口指针,然后调用 PostMessage 函数将消息发送到 UI 线程。在主窗口类中,我们重载了 OnUpdateUIText 函数,用于处理 WM_UPDATE_UI_TEXT 消息。在函数中,我们获取消息结构体指针,然后通过 SetWindowText 函数更新 UI 控件的文字。
阅读全文