gpt4 book ai didi

c++ - 正在运行的线程中的 cstatic 控件的 Redrawwindow

转载 作者:行者123 更新时间:2023-11-30 18:05:05 25 4
gpt4 key购买 nike

我有一个 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() 调用被编码到正确的线程上,但无论如何,出于性能原因,它们也最好从主线程发送。

关于c++ - 正在运行的线程中的 cstatic 控件的 Redrawwindow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6922664/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com