| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > TRACKBAR_CLASS в строке состояния |
| Автор: MironenkoDima 12.6.2013, 03:39 | ||
| Добрый день. Никак не получается заставить работать регулятор TRACKBAR_CLASS. Этот регулятор нужен в строке состояния. (будет отвечать за масштаб) Создаётся без каких-либо проблем, все начальные параметры так же задаются нормально. Да и ползунок передвигается всеми возможными способами. Не могу понять, где обрабатывать сообщения? Родительское окно для него - строка состояния. А для неё обработчика нету. или..?
|
| Автор: Earnest 12.6.2013, 05:24 |
| Что значит - нет обработчика? Напиши. Любые обработчики можно добавить в любое окно путем изменения оконной процедуры. |
| Автор: MironenkoDima 12.6.2013, 11:26 |
| Ну тут я сделал слишком "громкое" заявление в силу своей неграмотности. Извините. Есть ли возможность обработать сообщения более обобщённым способом? |
| Автор: Earnest 13.6.2013, 08:21 |
| Так это и есть самый обобщенный способ - сабклассинг то есть. Сообщение обычно посылаются родителю, вот он и должен их обрабатывать. Однако нельзя не согласиться, что обработка сообщений от трэкбара в строке состояния не очень логична с точки зрения логики приложения. Я бы сделала так: сабклассила строку состояния так, что все нотификации от трэкбара просто пересылаются главному окну. Кроме того, туда же (т.е. в новую процедуру строки состояния) нужно засунуть создание самого трэкбара, избавив главное окно от ненужных подробностей. |
| Автор: GremlinProg 13.6.2013, 09:53 |
| Есть вариант обойтись без сабклассинга: нужно завести 2 диалоговых ресурса. В первом размещается основное окно, а второй оформляется как дочерний статусбар, на котором можно размещать трекбар и спокойно обрабатывать в этом диалоге уведомления трекбара (WM_COMMAND и WM_NOTIFY). Тогда второй диалог нужно создать на первом, используя функцию CreateDialog Добавлено через 14 минут и 2 секунды но если смотреть в корень, то функционал управления диалогами реализуется на суперклассинге, так что общая логика Earnest работает и тут. |