MFC, определите, что drawText/TextOut перекрывается другим окном

Я разработал приложение, пользовательский интерфейс которого похож на следующее изображение,

Исходное изображение

Теперь я открываю окно панели управления, чтобы закрыть окно приложения, как показано на следующем рисунке,

обложка

когда я закрываю окно панели управления,

закрыть окно панели управления

текст, для рисования которого используется функция DrawText/TextOut,

будет стираться,

Как определить ситуацию, когда текст стереть....


person user1753112    schedule 12.06.2014    source источник


Ответы (1)


Это означает, что ваш DrawText и другие функции рисования написаны не в том месте. Вы должны сделать это в OnPaint или OnEraseBkgnd, чтобы они всегда рисовались (при перекрытии другого окна, при изменении размера и т.д.).

Кроме того, вы должны убедиться, что вы правильно создаете (CreateDC) и освобождаете контекст устройства (ReleaseDC) каждого объекта.

person Gautam Jain    schedule 12.06.2014
comment
Спасибо за ваш ответ. На данный момент мне не нужно часто перерисовывать его, поэтому я использую флаг для определения времени перерисовки, drawtext/TextOut определяется в onPaint. Если я всегда буду перекрашивать его, окна будут мигать огнями. - person user1753112; 12.06.2014
comment
WM_PAINT обрабатывается только при необходимости. Когда окно требует покраски. Он не работает постоянно. Таким образом, вы не должны видеть мигание. Вы можете избежать использования флага. Windows будет управлять автоматически, когда WM_PAINT необходимо поставить в очередь и обработать. - person Gautam Jain; 12.06.2014