Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Окно слишком часто отрисовывается


Автор: Verus 21.11.2008, 16:51
Создал класс Window : public CWnd
на событие кнопки пишу:
Код

win = new Window();
win->Create(_T("STATIC"), _T(""), WS_VISIBLE, CRect(300, 200, 690, 500), this, 1234);

в окне еще кнопка создана на которой битмап рисуется, но это не важно. Проблема в том что это окно отрисовывается(т.е. вызывается OnPaint() класса Window) каждую миллисекунду наверно, в общем непрерывно, а надо чтобы OnPaint() вызывался когда вызывается OnPaint() главного диалога, не чаще. Вопрос: что исправить надо? Спасибо.

Автор: Verus 21.11.2008, 18:08
Решил вопрос.

Автор: voov 21.11.2008, 19:12
отпишись как решил.

Автор: Verus 21.11.2008, 20:11
Создавать надо так:
Код

win->Create(_T("STATIC"), _T(""), WS_CLIPCHILDREN|WS_VISIBLE, CRect(300, 200, 690, 500), this, 1234);

ну а потом в OnPaint() родителя вызываем
Код

win->Invalidate();

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

Добавлено через 2 минуты
Мне теперь интересно возможно ли "убить" это окно по кнопке которую я создаю в этом окне на OnCreate()?

Добавлено через 3 минуты и 7 секунд
Отлавливать события нажатия этой кнопки не проблема, всякие вызовы в ней типа
Код

this->DestroyWindow();

приводят к ошибке

Автор: voov 24.11.2008, 19:26
Тогда уж не 
Код

 this->DestroyWindow(); 

а
Код

    win->DestroyWindow(); 


Если хочешь просто убрать окно, то его можно спрятать 
Код

      win->ShowWindow(SW_HIDE);


И вообще непонятно в каком окне твоя кнопка, в главном или в дочернем?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)