Redrawwindow cstatic control внутри бегущей нити - PullRequest
0 голосов
/ 03 августа 2011

У меня есть элемент управления 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"); 
}

Моя проблема в том, что результат выходной строки перезаписывает друг друга;текст не стирается после появления нового вывода.

Что еще мне нужно сделать, чтобы решить эту проблему?

1 Ответ

0 голосов
/ 03 августа 2011

Я предполагаю, что вы создаете окно в главном потоке (поток GUI), но затем вызываете функции для этого окна из рабочего потока.Это противоречило бы правилам, так как окна имеют сходство с потоком, в котором они созданы.

Убедитесь, что все вызовы API, использующие дескриптор окна, сделаны из основного потока.Обратите внимание, что вызовы SendMessage() направляются в правильный поток, но в любом случае по соображениям производительности их также лучше отправлять из основного потока.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...