![]() |
|
|
![]()
|
|
| dizzy1984 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 675 Регистрация: 15.2.2007 Репутация: 10 Всего: 25 |
Есть готовое приложение. В нем используется компонент CBCGPTabWnd, представляющий из себя окошко с закладками.
Можни ли как-то сменить закладку программно... Чтобы не заморачиваться на библиотеке bcgcontrolbar, задаю тот же вопрос для mfc контрола CTabCtrl (т.к есть подозрение на схожесть реализаций). Есть ли сообщение, которое будучи послано этому контролу приведет к смене закладки? |
|||
|
||||
| Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 12 Всего: 26 |
Это сообщение отредактировал(а) Andrey44 - 28.4.2009, 11:54 -------------------- ????? ??, ??????? ?????. |
|||
|
||||
| dizzy1984 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 675 Регистрация: 15.2.2007 Репутация: 10 Всего: 25 |
|
|||
|
||||
| Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 12 Всего: 26 |
-------------------- ????? ??, ??????? ?????. |
|||
|
||||
| dizzy1984 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 675 Регистрация: 15.2.2007 Репутация: 10 Всего: 25 |
То есть вы хотите сказать, что если последовательно послать 2 сообщения (TCN_SELCHANGING, TCN_SELCHANGE) родительскому окну, то сменится закладка дочернего CTabCtrl?
Я почему-то думал, что это просто уведомительные сообщения, посылающиеся уже после совершения смены закладки, т.е не являющиеся ее первопричиной... На опытном образце эти манипуляции не приводят к смене закладки. |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Правильно ты думал. Для CTabCtrl тебе уже сказали - SetCurSel, для CBCGPTAbWnd - SetActiveTab. Если ты хочешь именно через сообщения (т.е. другому приложению), то для CTabCtrl это TCM_SETCURSEL, а вот для CBCGPTAbWnd придется обломаться: управления сообщениями там нет. И реализация вовсе не такая, не предполагает обязательного использования TabCtrl. Впрочем, в конкретном случае он там может быть. Выяснить это можно Спаем, а затем послать сообщение соответствующему чайлду (скорее всего, это чайлд какого-то уровня). А если нет, то это может быть кнопка - тогда ей нужно послать LBUTTONDOWN. И если не кнопка - тоже сэмулировать нажатие на области закладки. -------------------- ... |
|||
|
||||
| dizzy1984 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 675 Регистрация: 15.2.2007 Репутация: 10 Всего: 25 |
Вообщем, все правильно, уже сам дошел до сказанного Earnest, хотя, конечно, приятно увидеть подтверждение.
Ни кнопок, ни таб контрола там нет, контрол сам рисует прямоугольные области, представляющие из себя закладки. Остается примерно такой способ : путем изучения кода отрисовки закладок сделать вывод о положении точки, принадлежащей закладке с заданным номером, после чего посылать сообщение WM_LBUTTONDOWN и, наверное, WM_LBUTTONUP, окошку контрола. Что представляется довольно трудоемким по сравнению с получаемым результатом, поэтому вряд ли когда-то будет. Вообще странно, что нет управления сообщениями - часто удобно управлять чужим контролом. |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Если соберешься эмулировать клик, лучше используй mouse_event, а не посылку LBUTTONDOWN\UP: во первых, не надо парится кому - только экранные координаты вычислить, во-вторых - up оно само нарисует... Но вообще рекомендую тебе изучить код BCGPTabWnd и его базы; я-то посмотрела весьма бегло; Может, что и нароешь.
-------------------- ... |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |