![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| polinin |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 30.3.2007 Репутация: нет Всего: нет |
Как правильно организовать обработку сообщений типа WM_CTLCOLORSTATIC, WM_CTLCOLOREDIT. Обычная обработка понятна. Проблема возникла когда пришлось сделать так: в главное окно положен таб-контрол, а уже в таб поставлен эдит. Парентом у эдита таб, и сообщение WM_CTLCOLOREDIT эдит шлёт табу, поэтому в главной процедуре программы эти сообщения не появляются. Это я msdn'е вычитал, дальнейшая экскурсия по msdn мало что дала ясного. Смутно понял, что можно пользовать SetWindowLong, GetWindowLong и ещё может быть CallWindowProc. Типа, что-то нужно проделать с оконнй процедурой таба. Объясните доходчиво какая тут взаимосвязь; что, как и в каком порядке надо проделать.
Спасибо. |
|||
|
||||
| BorisVorontsov |
|
|||
![]() Thinker ![]() ![]() Профиль Группа: Комодератор Сообщений: 714 Регистрация: 3.11.2005 Где: Молдавия, г. Киши нёв Репутация: 4 Всего: 10 |
На TabControl ставить контролы нельзя. Для этого следует создать отдельный диалог-страницу, и родителем назначить ему родитель TabControl'а. -------------------- [code=cpp] const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out); for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl; [/code] |
|||
|
||||
| polinin |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 30.3.2007 Репутация: нет Всего: нет |
Не понял почему нельзя на него контролы ставить... Но ладно, не так уж это важно в контексте вопроса. Пусть вместо Tab'а будет Rebar. В ребар ставят и комбо, и эдит. Как до их сообщений добраться? |
|||
|
||||
| BorisVorontsov |
|
|||
![]() Thinker ![]() ![]() Профиль Группа: Комодератор Сообщений: 714 Регистрация: 3.11.2005 Где: Молдавия, г. Киши нёв Репутация: 4 Всего: 10 |
Сабклассингом?
-------------------- [code=cpp] const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out); for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl; [/code] |
|||
|
||||
| polinin |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 30.3.2007 Репутация: нет Всего: нет |
||||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
На самом деле вполне можно, но ими будт неудобно управлять, если их много. А если, скажем, один список, то вполне нормально, без всяких прокладок. -------------------- ... |
|||
|
||||
| BorisVorontsov |
|
|||
![]() Thinker ![]() ![]() Профиль Группа: Комодератор Сообщений: 714 Регистрация: 3.11.2005 Где: Молдавия, г. Киши нёв Репутация: 4 Всего: 10 |
Это я и имел ввиду. Лучше сразу привыкнуть к правильному подходу, и создавать диалоги-страницы. -------------------- [code=cpp] const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out); for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl; [/code] |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
Оно конечно, но вдруг человек поверит, что именно НЕЛЬЗЯ. Лучше хорошо себе представлять, как и что устроено.
А правильный подход в разных ситуациях может быть совсем разным... Не сочтите за брюзжание, но я не раз сталкивалась с ситуацией, когда программист применяет метод, который можно назвать "через ж... коленом" только потому, что когда-то ему сказали, что он единственно правильный. -------------------- ... |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |