| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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 ); } |