给例子:在MFC的工作线程用PostMessage改变UI控件文字
时间: 2024-02-13 21:01:26 浏览: 91
基于mfc实现控件添加和修改
好的,下面是一个示例代码:
首先,在UI线程中定义一个消息ID:
```c++
#define WM_UPDATE_TEXT (WM_USER + 1)
```
然后,在UI线程中创建一个控件并设置初始文本:
```c++
CEdit m_edit;
m_edit.Create(WS_CHILD | WS_VISIBLE | ES_MULTILINE | ES_AUTOVSCROLL, CRect(10, 10, 200, 100), this, 1);
m_edit.SetWindowText(_T("Initial text"));
```
接下来,在工作线程中使用PostMessage发送消息来更新控件的文本:
```c++
// 在工作线程中调用以下代码
CString strText = _T("New text");
PostMessage(WM_UPDATE_TEXT, 0, (LPARAM)new CString(strText));
```
最后,在UI线程中处理消息并更新控件的文本:
```c++
// 在消息映射函数中添加以下代码
case WM_UPDATE_TEXT:
{
CString* pstrText = (CString*)lParam;
m_edit.SetWindowText(*pstrText);
delete pstrText;
break;
}
```
这样,工作线程就可以通过PostMessage来更新UI线程中的控件文本了。需要注意的是,由于PostMessage是异步的,所以在工作线程中更新文本后,需要等待UI线程处理消息并更新控件后才能继续执行下一步。
阅读全文