Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Глюки с status bar


Автор: Royan 15.5.2004, 22:46
Кто-нибудь сталкивался с тем, что после разбиения статус бара на несколько частей, а потом сворачивания и разворачивания окна все деления пропадают. То есть проблемы восстановить деления после того как окно развернуто у меня нет, вопрос почему все пропадает...:/

Автор: mr.DUDA 16.5.2004, 00:03
А "основное" деление (где текст) остаётся ? Имхо, может быть сам статусбар криво восстанавливается (не обрабатывает WM_SIZE ?..)

Автор: Royan 16.5.2004, 12:49
Я думаю все слышали великое твоерение Queen - A kind of magic... вобщем все, что я сделал это я в обработчике WM_SIZE добавил инструкцию для случая когда окно свернуто, и теперь глюк исчез...
Вот только мне интересно, а можно ли поймать сообщение WM_SIZE для статус бара? Ведь насколько я знаю для всех предопределннаых пользователем или встроенных оконных компонент (классов) существует сообщение WM_COMMAND, в случае со статус баром я его обрабатываю и получаю указатель на струтуру LPNMMOUSE, которая содержит инфу только о всяких нотификациях... а то что же приходиться для каждой компоненты на которую вляет WM_SIZE, вызывать соответствующий обработчик внутри обработчика WM_SIZE основного окна?

Автор: AndyY 16.5.2004, 17:14
Royan
WM_SIZE, как и любое другое сообщение, можно поймать субклассом окон.
HWND hwnd_status мы конечно знаем.


WNDPROC *pold = ::GetWindowLong( hwnd_status, GWL_WNDPROC );
::SetWindowLong( hwnd_status, GWL_WNDPROC, (long)subclassed_proc );

subclassed_proc представляет из себя функцию окна такого плана
LRESULT subclassed_proc( HWND h, UINT m, WPARAM w, LPARAM l )
{
if( m == WM_SIZE )
{
...//do something
}
return CallWindowPRoc( pold, h, m, w, l );
}


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