|
16 / 16 / 2
Регистрация: 08.05.2009
Сообщений: 81
|
|
Как работать создавать вкладки с CTabCtrl?03.06.2009, 23:15. Показов 6117. Ответов 14
Метки нет (Все метки)
Приветствую!
MFC. У меня возникла необходимость создать вкладки в диалоге, но работа с CPropertySheet меня не устраивает. Работал ли кто-нибудь с вкладками при помощи элемента CTabCtrl (не зря же он создан?), и если да, то объясните пожалуйста, как управлять вкладками?
0
|
|
| 03.06.2009, 23:15 | |
|
Ответы с готовыми решениями:
14
Трудности с размещением страниц на CTabCtrl внутри другого CTabCtrl
CTabCtrl - как с ним работать? |
|
MCSD: APP BUILDER
8795 / 1074 / 104
Регистрация: 17.06.2006
Сообщений: 32,602
|
|
| 03.06.2009, 23:24 | |
|
Добавляешь этот контрол на диалог, привязываешь к нему переменную
далее переменная.InsertItem(0, "Первая вкладка"); переменная.InsertItem(1, "Вторая вкладка"); ... естессно, они при этом будут пустые, это тебе не c# наполнение и переключение придется реализовать самому
0
|
|
|
16 / 16 / 2
Регистрация: 08.05.2009
Сообщений: 81
|
|
| 03.06.2009, 23:28 [ТС] | |
|
Так. Насчет метода InsertItem. Он только добавляет сами вкладки? Ладно.
А возможно ли полключать к нему что-то вроде готового PropertyPage-ресурса? Понятное дело, что это не C#. Я работал когда-то с вкладками, используя класс CPropertySheet, добавляя в него методом AddPage страницы CPropertyPage, ресурсы для которых предварительно заготавливал. А с этим контролом можно так же? Если нет, то можно хотя бы направление, как осуществлять это самое наполнение и переключение? Спасибо. PS: добавил, привязал .PPS: в книжках я находил только описание метода с CPropertySheet .
0
|
|
|
MCSD: APP BUILDER
8795 / 1074 / 104
Регистрация: 17.06.2006
Сообщений: 32,602
|
|||||||||||
| 03.06.2009, 23:38 | |||||||||||
|
можно нашлёпать готовых диалогов со стилем Сhild, визардом сделать классы, потом
потом добавляем обработчик переключения табов, а там
там ещё будет некоторый гемор с тем, чтобы по клавише Tab форус прыгал внутрь диалога, но щас не помню, чё там за запарки... Вроде какие-то флаги надо установить... впрочем, пока об этом можешь не париться :-D
1
|
|||||||||||
|
16 / 16 / 2
Регистрация: 08.05.2009
Сообщений: 81
|
|
| 03.06.2009, 23:47 [ТС] | |
|
Спасибо, в общем ясно. Пара уточнений:
CDialog1 - это класс ресурса для страницы? Свойство Child обязательно, или достаточно только границы отключить? И, если можно, такой вопрос (не совсем по теме): Переустановил себе студию (снес Express и поставил наконец-то Professional), и теперь, когда я захожу в ClassWizard из контекстного меню, выскакивает ошибка какого-то сценария (другие способы не проверял еще, но думаю будет так же; на другом компе проверял специально - работало всё). Картинка с окошком во вложении.
0
|
|
|
16 / 16 / 2
Регистрация: 08.05.2009
Сообщений: 81
|
|
| 03.06.2009, 23:52 [ТС] | |
|
PS: а здесь точно reinterpret_cast?? может надо dynamic_cast? он же вроде с иерархией наследования работает.
0
|
|
|
MCSD: APP BUILDER
8795 / 1074 / 104
Регистрация: 17.06.2006
Сообщений: 32,602
|
|
| 04.06.2009, 00:10 | |
|
Xardas,
CDialog1 - это класс, сгенерированный визардом на основе темплейта диалога (Add class) Свойство Child обязательно, не-child я не пробовал, как-то желание заняться сексом в гамаке пока не возникало (: выскакивает ошибка какого-то сценария хз, с таким не сталкивался думаю, что-то порушено в ИЕ попробуй отключить все аддоны, поставь 7, 8 версию... Добавлено через 2 минуты 1 секунду а здесь точно reinterpret_cast?? точно. ты значение типа DWORD_PTR преобразуешь в нужный тебе тип, никакой иерархии нет
0
|
|
|
16 / 16 / 2
Регистрация: 08.05.2009
Сообщений: 81
|
|
| 04.06.2009, 00:21 [ТС] | |
|
Из-за этой ошибки не могу по человечески работать с класс-визардом, а ВСЁ вручную делать как-то неохота - всё-таки Visual, пусть и не C#
.Windows Vista, IE8. та же ошибка начала выскакивать еще когда была 7 версия IE и студия стояла 2005. собственно потому и замутил всю историю с переходом на 2008 студию. не помогло. Насчет reinterpret_cast - стормозил. теперь увидел. На старом компе поставил Windows 7, и туда эту же 2008 студию - ClassWizard без проблем вообще работает. Тут - не знаю уже, что делать.
0
|
|
|
MCSD: APP BUILDER
8795 / 1074 / 104
Регистрация: 17.06.2006
Сообщений: 32,602
|
|
| 04.06.2009, 00:32 | |
|
Из-за этой ошибки не могу по человечески работать с класс-визардом
PS. чтобы найти решение этой проблемы мне потребовалось 37 секунд (из них 11 - на открытие банки джин-тоника) и 2 запроса в гоогле. :-D
0
|
|
|
16 / 16 / 2
Регистрация: 08.05.2009
Сообщений: 81
|
|
| 04.06.2009, 00:34 [ТС] | |
|
0
|
|
|
MCSD: APP BUILDER
8795 / 1074 / 104
Регистрация: 17.06.2006
Сообщений: 32,602
|
|
| 04.06.2009, 00:42 | |
|
первый запрос в гоогле: по скольку по-русски пытаться искать что-то бесполезно, я попытался представить, как эта фраза будет звучать в оригинале:
"visual studio wizard object is not supported this method" неудачно, вывелась какая-то ***** (тут я открываю банку джин-тоника.. хорошо пошло... )потом я замечаю номер строки, и пишу такой запрос: "visual studio wizard error line 815" и вуаля (((: Проблема специфичная для IE8, есть workaround
0
|
|
|
16 / 16 / 2
Регистрация: 08.05.2009
Сообщений: 81
|
|
| 04.06.2009, 00:48 [ТС] | |
|
Rififi, ладно, спасибо. нашел что-то на английском.
попробую устранить. неужели нельзя исправить что-то, не залезая в реестр ? или меня опять гуглем в дебри занесло??
0
|
|
|
MCSD: APP BUILDER
8795 / 1074 / 104
Регистрация: 17.06.2006
Сообщений: 32,602
|
|
| 04.06.2009, 00:52 | |
|
насколько я понял, нельзя. это именно приделывание костыля.
наверное команда которая делает IE немного по***лась с визуальщиками, вот они и чутка подгадили им :lol:
0
|
|
|
16 / 16 / 2
Регистрация: 08.05.2009
Сообщений: 81
|
||||||||||||||||||||||||||
| 04.06.2009, 02:56 [ТС] | ||||||||||||||||||||||||||
|
все возможно
![]() PS: проблема кажись ушла. спасибо, что тоже не гордый ![]() Добавлено через 28 минут 22 секунды хе, все равно не все так просто. Вот как сделал я. В классе главной формы у меня есть переменная класса CTabCtrl, связанная с контролом:
Далее, в методе OnInitDialiog класса главной формы добавляю действия для подключения первой и единственной пока что вкладки (метода SetItemDataPtr я не нашел, поэтому пока что не привязываю никакого адреса окна к вкладке. также нет у CTabCtrl метода SetItemData. возможно, можно в конструкторе инициализировать lParam?):
PS: стоп. а Create же нужно вызывать?? недостаточно ведь одного конструктора ![]() Добавлено через 7 минут 31 секунду нормально. осталось только подогнать позицию окна. Добавлено через 1 час 25 минут 58 секунд Итак, вот рабочий код. Может и не самый оптимальный по количеству действий, но тем не менее (для двух вкладок):
Как активировать обработку сообщений от них?
0
|
||||||||||||||||||||||||||
|
16 / 16 / 2
Регистрация: 08.05.2009
Сообщений: 81
|
|
| 28.06.2009, 16:31 [ТС] | |
|
Вижу, дать исчерпывающий ответ ни у кого нет малейшего желания. Жаль.
На rsdn, sourceproejct и в других источниках я находил разные примеры, но, почему-то когда пытался вручную воспроизводить предложенное описание реализации вкладок, всегда, видимо, упускал какую-то деталь, которая наверное всеми без исключения подразумевается, но не упоминается .В общем, забил я на это дело. Буду премного благодарен тем опытным людям, кто не поленится полностью изложить концепцию создания пользовательского интерфейса с вкладками.
0
|
|
| 28.06.2009, 16:31 | |
|
Помогаю со студенческими работами здесь
15
Как создавать вкладки QTab программно? [WPF] Как динамически создавать графические элементы и как с ними работать? Как создавать файлы в нужной мне директории, а потом работать с этими файлами? Что нужно знать, чтобы работать программистом и создавать не бесполезные программы? Просьба откликнутся тем кто умеет создавать серверы работать с соц движками Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 15.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|