Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
Somebody
Сообщений: n/a
#1

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

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

Попытался разобраться с этим компонентом, да застрял.
Задачка: разместить на разных вкладках объекта различные компоненты (скорее всего, посредством подгрузки ресурсов). Каким образом увязать компоненты с определенной вкладкой?
Господа, кто-нибудь же работал, СПАСИТЕ-е-е-е!!!
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.02.2008, 09:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос CTabCtrl - как с ним работать? (C++):

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

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

Что такое SDK и как с ним работать? - C++
1) что такое вообще SDK для IP камер: что-то вроде получение доступа (полномочий) к настройкам или какое-то ПО для получения этого доступа...

Как узнать и прочитать файл до того как с ним начнет работать другая программа - C++
Здрувствуйте! Подскажите пожалуйста, как я могу узнать и прочитать файл до того как с ним начнет работать другая программа. Например ...

Как передать файл в класс, и работать там с ним? - C++
Добрый день, у меня есть программа ,её надо реализовать через классы. Я работаю с фракталом Мандельброта. Программа рисует...

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

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

Удачи, Владимир
0
Somebody
Сообщений: n/a
03.02.2008, 13:50 #3
Спасибо, сейчас полезу!
Tremr
Сообщений: n/a
31.12.2008, 11:27 #4
Что бы ты не выбрал работать на низком уровне оно будет примерно так. CTabCtrl объект это всего лишь картинка. Нужно обрабатывать сообщение TCN_SELCHANGE (непомню как точно по английски, короче смена закладки). CTabCtrl может выдавать номер выбранной закладки. Нужно просто высвечивать дочерние окна соответственно выбранной закладке. Окна создаются отдельно, можно в визуальном редакторе. Там были какие-то команды позволяющие высветить окно именно в TabCtrl`е но я их щас не помню. Я сам совсем недавно над тем же корячился, а потом нашел через Рамблер сылку на интересный архив по программированию. Но потерял ссылку и теперь безуспешно пытаюсь найти её опять. Удачи.
Tremr
Сообщений: n/a
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 );
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.01.2009, 16:03
Привет! Вот еще темы с ответами:

Как работать с указателями и как работать с ссылками - C++
Я в книге дочитал до темы указатели и ссылки, не понимаю как работать с указателями и как работать с ссылками. Я прочитал понятия я понимаю...

Как создать массив объектов одного класса в другом, и как к ним обращаться? - C++
вот класс: #include <iostream> #include <string.h> using namespace std; class File { private: char *name, *date; int ...

Как получить доступ к элементам массива работая с ним как с указателем и адресной арифметикой - C++
int array = { {1,2,3}, {1,2},{1,2,3,4}, {1,2,3,4},{1,2,},}; for(int i = 0; i < 25; i++) printf("%d ", array); ...

Как создавать массивы объектов, и как к ним обращаться? - C++
как создавать массивы объектов и как к ним обращаться? вот что пишет создатель самого си в своей книге - получается что нельзя...


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

Или воспользуйтесь поиском по форуму:
5
Yandex
Объявления
01.01.2009, 16:03
Ответ Создать тему
Опции темы

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