Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/12: Рейтинг темы: голосов - 12, средняя оценка - 4.75
Somebody
1

CTabCtrl - как с ним работать?

03.02.2008, 09:01. Показов 2334. Ответов 4
Метки нет (Все метки)

Попытался разобраться с этим компонентом, да застрял.
Задачка: разместить на разных вкладках объекта различные компоненты (скорее всего, посредством подгрузки ресурсов). Каким образом увязать компоненты с определенной вкладкой?
Господа, кто-нибудь же работал, СПАСИТЕ-е-е-е!!!

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.02.2008, 09:01
Ответы с готовыми решениями:

CGraphView... Как с ним работать.
Подскажите пожалуйста, как работать с классом CGraphView. Очень надо. Может кто-то станкивался......

STL STACK как с ним работать?
задача такова: 1. Создать объект-контейнер в соответствии с вариантом задания и заполнить его...

Как работать создавать вкладки с CTabCtrl?
Приветствую! MFC. У меня возникла необходимость создать вкладки в диалоге, но работа с...

Трудности с размещением страниц на CTabCtrl внутри другого CTabCtrl
На диалоговом окне есть компонент TAB_CTRL1 типа CTabCtrl, на котором расположены несколько...

4
7 / 7 / 12
Регистрация: 13.02.2007
Сообщений: 1,255
03.02.2008, 11:46 2
Если ты только начинаешь и используешь VС++ 6.0, то лучше всего воспользоваться помошником. Это где-то в меню проект->добавить новые компоненты, появится 2 папки, выбери ту, что не связана с ActiveX, там можно найти интересные вещи, такие как ToolTips, Tip of the day, Добавление TabCtrl диалога и многое другое...

Удачи, Владимир
0
Somebody
03.02.2008, 13:50 3
Спасибо, сейчас полезу!
Tremr
31.12.2008, 11:27 4
Что бы ты не выбрал работать на низком уровне оно будет примерно так. CTabCtrl объект это всего лишь картинка. Нужно обрабатывать сообщение TCN_SELCHANGE (непомню как точно по английски, короче смена закладки). CTabCtrl может выдавать номер выбранной закладки. Нужно просто высвечивать дочерние окна соответственно выбранной закладке. Окна создаются отдельно, можно в визуальном редакторе. Там были какие-то команды позволяющие высветить окно именно в TabCtrl`е но я их щас не помню. Я сам совсем недавно над тем же корячился, а потом нашел через Рамблер сылку на интересный архив по программированию. Но потерял ссылку и теперь безуспешно пытаюсь найти её опять. Удачи.
Tremr
01.01.2009, 16:03 5
Вот откопал код реализующий закладки с помощью TabCtrl. В моей программе три закладки. Их я создал в визуальном редакторе и назначил классы от CDialog. Ну убрал из них конечно заголовки окна и т. п. Вот короче код:

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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
BOOL CMonitorDlg::OnInitDialog() 
{
    CDialog::OnInitDialog();
 
    TC_ITEM tci;   // в нее записываются параметры создаваемой закладки
 
    memset(&tci,0,sizeof(tci));
    tci.mask = TCIF_TEXT;    // у закладки будет только текст
 
    tci.pszText = 'Объекты'; // название закладки
    m_Tab.InsertItem(0, &tci); // первая закладка имеет индекс 0
 
    tci.pszText = 'Монитор';
    m_Tab.InsertItem(1, &tci);  // вставляем вторую закладку
 
    tci.pszText = 'Параметры';
    m_Tab.InsertItem(2, &tci);  // вставляем вторую закладку
 
    
    //Задаём показ первой закладки при создании окна MonitorDlg
    NMHDR hdr;
 
    hdr.code = TCN_SELCHANGE;
    hdr.hwndFrom = m_Tab.m_hWnd;
 
    SendMessage ( WM_NOTIFY, m_Tab.GetDlgCtrlID(), (LPARAM)&hdr );
 
  
    return TRUE;  // return TRUE unless you set the focus to a control
                  // EXCEPTION: OCX Property Pages should return FALSE
}
 
void CMonitorDlg::OnSelchangeTab(NMHDR* pNMHDR, LRESULT* pResult) 
{
    //int id; // ID диалога 
    /**Здесь я кое-что изменил. Не стал удалять окна а просто гасить и выводить заново.
    вродебы работает. Строки предыдущего варианта не стал удалять на всякий случай.
    Я просто их забил. Только в новом варианте нужно объявить объекты окон-закладок
В файле заголовке родительского окна*/
 
  // надо сначала удалить предыдущий диалог в Tab Control'е:
  if (m_pTabDlg)
  {
    //m_pTabDlg->DestroyWindow();
    //delete m_pTabDlg;
    m_pTabDlg->ShowWindow ( SW_HIDE ); // Вместо удаления    закладки, я здесь просто                                                                                            //прячу ее
  }
 
  // теперь в зависимости от того, какая закладка выбрана, 
  // выбираем соотв. диалог
  switch( m_Tab.GetCurSel()+1 ) // +1 для того, чтобы порядковые номера закладок
                                // и диалогов совпадали с номерами в case
  {
    // первая закладка
    case 1 :
          //id = IDD_TabObject;
          //m_pTabDlg = new CPageObject;
          m_pTabDlg = &m_TabObject; 
            // тип указателя соответствует нужному диалогу,
            // иначе добавленный в диалог код не будет функционировать
    break;
 
    // вторая закладка
    case 2 :
          //id = IDD_TabMonitor;
          //m_pTabDlg = new CPageMonitor;
          m_pTabDlg = &m_TabMonitor;
    break;
 
     // Третья закладка
    case 3 :
          //id = IDD_TabOptions;
          //m_pTabDlg = new CPageOptions;
          m_pTabDlg = &m_TabOptions;
    break;
 
    // все остальные закладки, если они есть,
    // будут здесь тоже представлены, каждая - отдельным case
 
    // а если обработка такого номера не предусмотрена
    default:
       /*m_pTabDlg = new CDialog; // новый пустой диалог
       return;*/
        m_pTabDlg = &m_TabMonitor;
        break;
 
   } // end switch
 
  // создаем диалог
  //m_pTabDlg->Create (id, (CWnd*)&m_Tab); //параметры: ресурс диалога и родитель
 
  CRect rc; 
 
  m_Tab.GetWindowRect (&rc); // получаем 'рабочую область'
  m_Tab.ScreenToClient (&rc); // преобразуем в относительные координаты
 
  // исключаем область, где отображаются названия закладок:
  m_Tab.AdjustRect (FALSE, &rc); 
 
  // помещаем диалог на место..
  m_pTabDlg->MoveWindow (&rc);
 
  // и показываем:
  m_pTabDlg->ShowWindow ( SW_SHOWNORMAL );
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.01.2009, 16:03

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Picture control как с ним работать
Хочу создать Picture control через createwindow, но не могу найти как с ним работать и как...

OleContainer1->LoadFromFile как с ним работать?
OleContainer1->LoadFromFile("1.doc") ошибка Invalid stream format А як мне загрузить в...

Метод NetLocalGroupAddMembers() как с ним работать?
Здравствуйте! Ребята подскажите по такому вопросу? Хочу программно внести пользователя в группу...

PlayGround SDK как работать с ним?
Есть инсталяха PlayGround SDK. Установил его, а что дальше делать не знаю. Документацию читаю на...

Where и как с ним работать?
не могу разобраться с расширением Where на майкрофте пишут int numbers = { 0, 30, 20, 15, 90,...

Iif как с ним работать?
Добрый день, форумчане) Имеется задача: Если значение в Поле7 равно 5, то в Поле 10 необходимо...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.