[英]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线程)中创建窗口,但是随后从辅助线程在该窗口上调用函数。 因为Windows与创建它们的线程具有亲和力,所以这将违反规则。
确保所有使用窗口句柄的API调用都是从主线程进行的。 请注意,将SendMessage()
调用编组到正确的线程上,但是在任何情况下,出于性能原因,最好从主线程发送它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.