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


Автор: Kostt 25.8.2009, 10:31
Здравствуйте!
Простая с виду задача, а не могу ни в MSDN ни в интернете найти решение. Необходимо по имеющемуся указателю CWnd*
определить, установлен ли у него флаг SetRedraw()

Автор: Andrey44 25.8.2009, 11:04
Цитата(Kostt @  25.8.2009,  10:31 Найти цитируемый пост)
определить, установлен ли у него флаг SetRedraw() 
А зачем?
Если надо pWnd->SetRedraw();
А если не надо pWnd->SetRedraw(FALSE);

Автор: Kostt 25.8.2009, 11:11
Цитата(Andrey44 @ 25.8.2009,  11:04)
Цитата(Kostt @  25.8.2009,  10:31 Найти цитируемый пост)
определить, установлен ли у него флаг SetRedraw() 
А зачем?

Нужно выполнять некоторые действия только если Redraw включен

Автор: Earnest 26.8.2009, 07:59
Действительно, при беглом поиске никаких способов спросить у окна этот самый RedrawFlag я не нашла.
Но зато нашла следующее довольно забавное замечание:
Цитата

WS_VISIBLE   Set or cleared when
                                               DefWindowProc receives
                                               WM_SETREDRAW message to
                                               turn drawing on or off,
                                               respectively.

Т.е. можно попробовать спрашивать флаг стиля WS_VISIBLE, причем именно через GetWindowLong (GWL_STYLE). 
Хотя статейка старая, от 2000 года, может, что-то изменилось. 

Если не получится, то можно завести в окне собственный флаг, перехватить WM_SETREDRAW и устанавливать его в обработчике, а потом вызывать стандартную реализацию.

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