| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > Вопрос по перерисовке |
| Автор: yngwie19 4.3.2009, 15:24 |
| Здравствуйте. У меня в главном окне прилодения есть окно с классом STATIC (для вывода текста) и есть окно с классов (TRACKBAR_CLASS) для регулятора некоторых значений. Вопрос: Почему когда Я обрабатываю сообщение о перерисовке только STATIC а именно WM_CTLCOLORSTATIC, то и TrackBar у меня тоже получает такой же фон. Ведь сообщение относится только к классу STATIC. Спасибо |
| Автор: GremlinProg 4.3.2009, 17:39 |
нет, не обязательно WM_CTLCOLORSTATIC - стандарт, в некотором смысле, доступный для поддержки в любых компонентах чтобы точно идентифицировать, какой компонент отсылает WM_CTLCOLORSTATIC, нужно проверять lParam, он передает дескриптор дочернего окна, от которого это уведомление отправлено по этому дескриптору и нужно фильтровать WM_CTLCOLORSTATIC |
| Автор: yngwie19 4.3.2009, 17:53 |
| GremlinProg, Понял спасибо! а к другим сообщениям например WM_CTLCOLOREIDIT тоже относится этот стандарт |
| Автор: GremlinProg 4.3.2009, 19:47 |
| как-бы стандарт ) смотри по документации к интересующему компоненту, там для каждого существует отдельная ветвь Notifications со списком и описанием всех уведомлений, которые он посылает конечно, основная масса этих уведомлений инкапулировано в WM_NOTIFY и WM_COMMAND, но вот такие исключения - тоже бывают вот, например, для Edit: http://msdn.microsoft.com/en-us/library/bb775458(VS.85).aspx или для TrackBar: http://msdn.microsoft.com/en-us/library/bb760145(VS.85).aspx если для TrackBar WM_CTLCOLORSTATIC не указан, то можно сделать предположение, что он наследуется (субклассится) от STATIC: http://msdn.microsoft.com/en-us/library/bb760769(VS.85).aspx я не занимался такими исследованиями, чтобы утверждать, выложи проект, на всякий случай, может дело и не в этом вовсе |