Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.95/22: Рейтинг темы: голосов - 22, средняя оценка - 4.95
 Аватар для generation472
24 / 24 / 7
Регистрация: 04.11.2011
Сообщений: 566
Записей в блоге: 1

TabControl в MFC

26.11.2014, 16:20. Показов 4433. Ответов 35
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня на главном диалоге есть таб контрол в котором 3 закладки для каждой закдадки я создал 3 отдельный диалог и вывожу их и добавил обработчик для переключение между табами, теперь хочу в 1 диалоге добавить ещё один таб контрол, то есть получается таб контрол находится в первой закладке главного таб контрола.


И когда пытаюсь программно добавить новые закладки выходит ошибка

Добавляем в главный табконтрол закладки и выводим диалоги
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
TC_ITEM TabItem;
    TabItem.mask = TCIF_TEXT;
    TabItem.pszText = "Электромонтаж";
    m_ctrTab.InsertItem( 0, &TabItem );
    TabItem.pszText = "ВИП";
    m_ctrTab.InsertItem( 1, &TabItem );
    TabItem.pszText = "Закладка3";
    m_ctrTab.InsertItem( 2, &TabItem );
 
 
 
    CPage1* pPage1;
    pPage1 = new CPage1;
    TabItem.mask = TCIF_PARAM;
    TabItem.lParam = (LPARAM)pPage1;
    m_ctrTab.SetItem(0, &TabItem);
    VERIFY(pPage1->Create(CPage1::IDD, &m_ctrTab));
    pPage1->SetWindowPos(NULL, 30, 25, 0, 0, SWP_NOSIZE | SWP_NOZORDER);
    pPage1->ShowWindow(SW_SHOW);
        
    CPage2* pPage2;
    pPage2 = new CPage2;
    TabItem.mask = TCIF_PARAM;
    TabItem.lParam = (LPARAM)pPage2;
    m_ctrTab.SetItem(1, &TabItem);
    VERIFY(pPage2->Create(CPage2::IDD, &m_ctrTab));
    pPage2->SetWindowPos(NULL, 30, 25, 0, 0, SWP_NOSIZE | SWP_NOZORDER);
    pPage2->ShowWindow(SW_HIDE);
            
        
    CPage3* pPage3;
    pPage3 = new CPage3;
    TabItem.mask = TCIF_PARAM;
    TabItem.lParam = (LPARAM)pPage3;
    m_ctrTab.SetItem(2, &TabItem);
    VERIFY(pPage3->Create(CPage3::IDD, &m_ctrTab));
    pPage3->SetWindowPos(NULL, 30, 25, 0, 0, SWP_NOSIZE | SWP_NOZORDER);
    pPage3->ShowWindow(SW_HIDE);

код для добавление закладки для второго табконтрола , где то здесь ошибка, так как без этого кода работает
C++
1
2
3
4
5
    TC_ITEM TABITEM;
    TABITEM.mask = TCIF_TEXT;
 
    TABITEM.pszText =_T("ЗАКЛАДКА1");
    c_TabPage1.InsertItem( 0, &TABITEM );
Миниатюры
TabControl в MFC  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.11.2014, 16:20
Ответы с готовыми решениями:

TabControl в mfc C++
Только начал изучать программирование(ну когдато чтото делал по учёбе, но там знания крайне поверхностные нужны были, да и давно было). ...

Как правильно использовать TabControl в MFC?
У меня есть готовая программа, но внезапно на нее потребовалось поставить tabcontrol, чтобы расширить функционал. То есть я хочу, чтобы при...

Создание TabControl в TabPage, а в этом TabControl создать RichTextBox
Нужно создать TextBox и кнопку,при нажатии на кнопку в уже созданом TabControl создаётся новая вкладка(ну TabPage)и в этой вкладке еще...

35
 Аватар для generation472
24 / 24 / 7
Регистрация: 04.11.2011
Сообщений: 566
Записей в блоге: 1
27.11.2014, 09:06  [ТС]
Нашёл на другом форме подобную ошибку говорят что в TABITEM содержится мусор но как решить эту проблему не понятно

Добавлено через 16 часов 16 минут
Форумчане, есть идеи насчёт моей проблемы?
0
120 / 142 / 46
Регистрация: 31.10.2014
Сообщений: 721
Записей в блоге: 1
27.11.2014, 09:18
У CPage1* pPage1; кто родитель ?
1
 Аватар для generation472
24 / 24 / 7
Регистрация: 04.11.2011
Сообщений: 566
Записей в блоге: 1
27.11.2014, 09:22  [ТС]
demmax2004, CDialogEx
CPage1 Это класс диалога который отображается в первой вкладке главного табконтрола, надеюсь вы меня поняли что я пытаюсь сделать
0
120 / 142 / 46
Регистрация: 31.10.2014
Сообщений: 721
Записей в блоге: 1
27.11.2014, 09:55
Ты на основной табконтрол положил диалог, на диалоге должен создаваться еще один табконтрол, так вок я не вижу где твой диалоговый табконтрол использует hwnd диалога
1
 Аватар для generation472
24 / 24 / 7
Регистрация: 04.11.2011
Сообщений: 566
Записей в блоге: 1
27.11.2014, 10:01  [ТС]
Цитата Сообщение от demmax2004 Посмотреть сообщение
Ты на основной табконтрол положил диалог
точнее на первую вкладку,

demmax2004, а зачем он должен использовать его HWND, если я создаю новый таб котрол который не как не должен быть связан с главным табконтролом,

Добавлено через 41 секунду
может скинуть проект мой может сможете разобраться?
0
120 / 142 / 46
Регистрация: 31.10.2014
Сообщений: 721
Записей в блоге: 1
27.11.2014, 10:03
Дочерние контролы должны иметь родителей, иначе они не будут создаваться !!!
1
 Аватар для generation472
24 / 24 / 7
Регистрация: 04.11.2011
Сообщений: 566
Записей в блоге: 1
27.11.2014, 10:06  [ТС]
demmax2004, И как это сделать?
0
120 / 142 / 46
Регистрация: 31.10.2014
Сообщений: 721
Записей в блоге: 1
27.11.2014, 10:08
Как ты допустим кнопку создаешь ?
1
 Аватар для generation472
24 / 24 / 7
Регистрация: 04.11.2011
Сообщений: 566
Записей в блоге: 1
27.11.2014, 10:16  [ТС]
demmax2004, просто добавляю элемент управления на диалог ну и прописываю ему событие)

Добавлено через 5 минут
demmax2004, всё я понял в чём проблема, этот код я добавил в конструктор диалога, и так получается что при инизилизации диалога табконтрола ещё не существует, но вопрос теперь куда добавить этот код в классе моего диалога?
0
120 / 142 / 46
Регистрация: 31.10.2014
Сообщений: 721
Записей в блоге: 1
27.11.2014, 10:18
Лучший ответ Сообщение было отмечено generation472 как решение

Решение

Ну собственно так создается динамически
C++
1
2
3
4
5
CButton myButton1;
 
// Create a push button.
myButton1.Create(_T("My button"), WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON, 
   CRect(10,10,100,30), pParentWnd, 1);
Так вот pParentWnd это хэндл родительского окна.

Все понял CPage это страницы для TabControl
Ты TabControl на диалог то кидал ?
1
 Аватар для generation472
24 / 24 / 7
Регистрация: 04.11.2011
Сообщений: 566
Записей в блоге: 1
27.11.2014, 10:21  [ТС]
demmax2004, да))) поэтому я и сказал что не понимаю почему он должен быть связан))

Добавлено через 1 минуту
Щяс я сделал что по кнопке у добавляются закладки, но как теперь сделать чтоб автоматически создались закладки, может при иницилизации самого таб контрола тока не нашёл событие для него
0
120 / 142 / 46
Регистрация: 31.10.2014
Сообщений: 721
Записей в блоге: 1
27.11.2014, 10:26
Почитай первоисточник
http://msdn.microsoft.com/en-u... 5x2d4.aspx
1
 Аватар для generation472
24 / 24 / 7
Регистрация: 04.11.2011
Сообщений: 566
Записей в блоге: 1
27.11.2014, 10:29  [ТС]
demmax2004, с таб контролом я разобрался лучше скажи мне куда закинуть этот код который добавляет закладки)
0
120 / 142 / 46
Регистрация: 31.10.2014
Сообщений: 721
Записей в блоге: 1
27.11.2014, 10:34
Лучший ответ Сообщение было отмечено generation472 как решение

Решение

в OnCreate добавь
1
 Аватар для generation472
24 / 24 / 7
Регистрация: 04.11.2011
Сообщений: 566
Записей в блоге: 1
27.11.2014, 10:36  [ТС]
demmax2004, к сожаление нет такого метода только конструктор, деструктор и DoDataExchange, или самому прописать этот метод?
0
120 / 142 / 46
Регистрация: 31.10.2014
Сообщений: 721
Записей в блоге: 1
27.11.2014, 10:55
Лучший ответ Сообщение было отмечено generation472 как решение

Решение

Я создал MFC там есть такое
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
BOOL CMFCApplication1Dlg::OnInitDialog()
{
    CDialogEx::OnInitDialog();
 
    // Задает значок для этого диалогового окна. Среда делает это автоматически,
    //  если главное окно приложения не является диалоговым
    SetIcon(m_hIcon, TRUE);         // Крупный значок
    SetIcon(m_hIcon, FALSE);        // Мелкий значок
 
    // TODO: добавьте дополнительную инициализацию
 
    return TRUE;  // возврат значения TRUE, если фокус не передан элементу управления
}
а у тебя должна быть
C++
1
2
3
4
BOOL MyDlg::OnInitDialog()
{
 
}
1
 Аватар для generation472
24 / 24 / 7
Регистрация: 04.11.2011
Сообщений: 566
Записей в блоге: 1
27.11.2014, 10:55  [ТС]
demmax2004, всё сделал спс что помогал, добавил функцию OnInitDialog
0
120 / 142 / 46
Регистрация: 31.10.2014
Сообщений: 721
Записей в блоге: 1
27.11.2014, 10:59
Получилось или нет ?
1
 Аватар для generation472
24 / 24 / 7
Регистрация: 04.11.2011
Сообщений: 566
Записей в блоге: 1
27.11.2014, 11:10  [ТС]
demmax2004, да всё работает как я хочу, добавил OnInitDialog немного подправил и заработало

Добавлено через 54 секунды
Просто OnInit присутствует только у главного диалога, а у дочерних не было
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.11.2014, 11:10
Помогаю со студенческими работами здесь

MVVM. Если окно содержит 1 TabControl, который в себе содержит много вкладок и в каждой может быть другой TabControl с вкладками
Я сделал так: Создал UserControl, в него поместил TabControl создал вкладки, во вкладки начал помещать нужные объекты (ListView, кнопки,...

Из MFC 2012 в MFC 2005
Есть прокт для студии 12, всё хорошо, писал на 8ке в VS 2012 и он отлично работает. Позже понадобилось портировать его для 2005, я это всё...

подключение классов MFC к не MFC
Как подключить MFC Class From ActiveX Control к не MFC проекту? т.е. пишу обычными винапи функциями, а из этого класса нужны функции...

Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll
Здравствуйте. Подключил afx.h, появилась ошибка. Из-за чего? Что делать?

TabControl
При попытке создать вкладку пишет: WC_TABCONTROL was not declared in this scope Почему?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru