![]() |
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]() ![]() ![]() |
|
0x07L |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 10.6.2006 Где: Москва Репутация: 4 Всего: 5 |
Есть диалог, в диалоге - два таб контрола и кнопка. Кнопка и один из таб контролов помещены на другой таб контрол. Проблема в том, что внутренний таб контрол не отображается. Замечу, внутренний таб контрол и кнопка не перекрываются.
Содержимое файла ресурсов
При запуске программы кнопка и внутренний таб контрол оказываются ПОД внешним таб контролом, что однако не мешает отображаться кнопке. Как сделать, чтобы отображался и внутренний таб контрол? Если поменять порядок контролов в файле ресурсов, поместив внутренний таб перед внешним, то он будет отображаться, но мы будем иметь кривой таб ордер. Мне бы хотелось, чтобы было [внешний таб] --> [внутренний таб] --> [кнопка]. В последнем же случае внутренний таб будет идти перед внешним. Делать внутренний таб потомком внешнего тоже не хотелось бы, поскольку во внутреннем табе будут размещены контролы, а WM_NOTIFY и прочая таб-родитель моему диалогу пересылать не будет (проверено). Между тем "архитектура приложения" ( ![]() Итак, как добиться отображения таб контрола, сохранив при этом таб ордер, который я хочу? Возможно ли это? Если нет, может стоит забить на таб ордер? Варианты кодирования собственного таб ордера с помощью хуков на нажатие клавиши Tab просьба не предлагать. Муторно это и программа того не стОит Это сообщение отредактировал(а) 0x07L - 26.11.2006, 20:36 Присоединённый файл ( Кол-во скачиваний: 9 ) ![]() |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
Может, транспарент поможет? Кнопка-то небось стиль defaultButton получает (если она пока одна), вот и рисуется поверх еще раз.
Но вообще как-то криво. Я бы все же сделала внутренний таб и кнопку дитем внешнего, а сообщения просто транслировала. Всего то OnCommand и OnNotify переопределить. Или забить на Таб-ордер - вообще сделай внешний таб не таб-стоп - какой смысл? Кстати, контролы чьи дети будут? Если хочешь сделать что-то типа расширенного блокнота, то удобнее контролы распихивать по отдельным окнам (ресурсам). И зачем тебе понадобился таб в табе? По-моему, не очень это красиво будет смотреться. -------------------- ... |
|||
|
||||
0x07L |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 10.6.2006 Где: Москва Репутация: 4 Всего: 5 |
Нет, WS_EX_TRANSPARENT не помогает
![]()
![]() Это если MFC использовать, в Win32 придется субклассить, что, в общем, не проблема. Проблема в таб ордере. Чтобы между закладками можно было переключаться с помощью клавиатуры. Или для этого есть еще какой-то способ? Те, которые внутри внутреннего диалога? Я бы хотел, чтобы они были детьми диалога (чтоб не субклассить лишний раз и хук на ставить) Да, я чувствую, жутко неудобно будет такие, как мой, диалоги в редакторе ресурсов изменять. C другой стороны, сообщения транслировать придется. Проблему таб ордера это не снимает Единственная достойная альтернатива такой конструкции (на мой взгляд) - многоуровневые меню, что для моего случае не очень подходит |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
Просто проклянешь все на свете. Думай заранее о технологичности поддержки. Я такое однажды имела, правда не в С++, но сути это не меняло... Получила в наследство. Сначала маялась, потом нафиг переделала, хоть пришлось попотеть... Но зато наступило щастье... Ты когда-нибудь такое видел - таб в табе? И не стоит думать, что твоя задача супер-уникальная. Что за задача-то? Альтернатива всегда есть... Внешний таб можно заменить, скажем, деревом... с любым уровнем вложения... Ведь подумай, все закладки видны всегда, и, значит, здорово загромождают интерфейс... А нафига? Пользователь-то за один раз работает с одной страницей. Кстати, если хочешь, чтобы контролы были детьми диалога, совсем не обязательно их сразу в диалог пихать. Все равно проще создать отдельные ресурсы, а потом, подгрузив ресурс, скопировать из него контролы в диалог. Код, конечно, придется пописать, но это один раз... Хотя дочерние вложенные диалоги у меня всегда нормально (в смысле таб-ордера) себя вели... -------------------- ... |
|||
|
||||
0x07L |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 10.6.2006 Где: Москва Репутация: 4 Всего: 5 |
Делаем на занятиях программу для работы с изображениями: для наложения фильтров, подавления шума и пр. Во внешнем табе будут вкладки "Наложение фильтров", "Подавление шума" и т.д., во внутреннем табе - либо вкладки с названиями фильтров, либо со способами подавления. Табы я выбрал потому что
1) Сразу видна вся функциональность 2) Они не занимают много места, что важно, ведь мне и изображения (две штуки - исходное и результат) нужно куда-то засунуть, и гистограммы должны быть постоянно видны Рассматривал также вариант, когда маленькие диаложики с фильтром или подавителем шума появляются по нажатию соответствующих пунктов меню, но это мне не понравилось по пункту 1 Что же касается варинта с деревом, то он, пожалуй, больше места на диалоге будет требовать, хотя ненамного. Так что, если с таб ордером ничего не выйдет, буду использовать такой способ |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
Если вариантов немного, и вложенность только двухуровневая, используй комбобокс вместо внешнего таба.
Гораздо проще, чем дерево, и места почти не занимает. Кроме всего прочего, интерфейс должен быть стандартным, тем более, если это учебная задача. -------------------- ... |
|||
|
||||
0x07L |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 10.6.2006 Где: Москва Репутация: 4 Всего: 5 |
Да, это хорошее решение. Спасибо большое!
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "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. |