正在运行的线程中静态控件的重绘窗口
Redrawwindow of a cstatic control within a running thread
我有一个CStatic控件,我想在运行时设置它的文本(计算斐波那契数)
Class TXT:public CStatic
{
private:
CString m_str;
public:
SetText(const CString& str)
{
m_str=str;
RedrawWindow();
}
////other methods OnPaint etc
}
//someclass that contains
{
////....
TXT m_res;
///....
}
UINT threadProc(LPVOID lp)
{
//computing Fibonacci
p->m_res.SetText("resultTXT");
}
我的问题是输出字符串结果相互覆盖;一旦出现新的输出,文本不会被擦除。
我还应该做什么来解决这个问题?
我的猜测是,您正在主线程(GUI线程)中创建窗口,但随后从工作线程调用该窗口上的函数。这是违反规则的,因为窗口与创建它们的线程有关联。
确保所有使用窗口句柄的API调用都是从主线程进行的。请注意,SendMessage()
调用被封送到正确的线程,但在任何情况下,出于性能原因,它们最好从主线程发送。
相关文章:
- 在createdialog创建的窗口中捕获用于编辑控件的OnMouseMove消息
- 如何在MFC中的静态文本控件上插入图标?
- 我的主窗口在创建时或单击更新区域时是否会收到编辑控件?
- 如果我有五个 Win32 静态控件,如何使用特定的前景色设置其中一个?
- 如何检测将鼠标悬停在静态 Win32 控件上
- win32 c++ 我想在静态标签的文本之后直接插入一个 EDIT 控件
- Win32 c++ 更改透明静态控件中的文本将其置于底部
- 为什么将鼠标悬停在静态 Win32 控件上会增加内存并删除我的 GUI?
- 在运行时向窗口添加控件
- 如何在Win32(C++)静态控件中正确渲染OpenGL
- STM_SETIMAGE不会使静态控件失效/重新绘制
- 有没有办法获取对 MFC 对话框中所有子窗口或控件的引用,因为我有一个引用该控件的 CWnd 对象
- 如何在改变文本时重新绘制静态控件
- 静态控件设置文本颜色
- 如何使图片适合于一个静态控件vc++ win32
- 正在运行的线程中静态控件的重绘窗口
- 将文本放到运行时注册的静态控件中
- 正在将文本发送到静态控件
- 如何在“选择文件夹”对话框中为静态控件的背景着色
- 使用父窗口的控件打开新窗口