Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/48: Рейтинг темы: голосов - 48, средняя оценка - 4.69
60 / 57 / 8
Регистрация: 22.07.2011
Сообщений: 436

TabControl

02.10.2011, 21:33. Показов 9649. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
При попытке создать вкладку пишет:
WC_TABCONTROL was not declared in this scope

Почему?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.10.2011, 21:33
Ответы с готовыми решениями:

TabControl и ResEdit
Здравствуйте, хочу сделать маленькую программу, решил писать на WinApi. Скачал ResEdit чтоб визуально сделать интерфейс. Кинул на форму...

Tabcontrol на окне
В msdn есть пример как нарисовать tabcontrol. Запускаю стандартный проект VS с окном по умолчанию и вставляю после создания главного окна...

Не могу разобраться с TabControl
Привет, есть проблема: рисую TabControl потом создаю на странице два Edit-а 85-86 строки То при переключении вкладок один Edit...

15
12 / 12 / 0
Регистрация: 21.08.2009
Сообщений: 87
02.10.2011, 22:36
Сразу, глянув в карты, видим ответ: "Звёзды не в том положении". Где код, как делаешь, догадаться или сам скажешь?
0
60 / 57 / 8
Регистрация: 22.07.2011
Сообщений: 436
03.10.2011, 17:19  [ТС]
Цитата Сообщение от dsoft Посмотреть сообщение
Сразу, глянув в карты, видим ответ: "Звёзды не в том положении". Где код, как делаешь, догадаться или сам скажешь?
wxDev-c++, но и без этого ясно видно что WC_TABCONTROL не описан. Может какую библиотеку или ещё что?

Добавлено через 3 часа 27 минут
Вроде разобрался, подключил lcomctl32 к линкеру, подключил commctrl.h. , InitCommonControlsEx(), но получился какой то квадрат, похожий на кнопку. Если не сложно, дайте пример использования вкладок.
0
375 / 322 / 32
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
03.10.2011, 17:54
А что MSDN? Using Tab Controls
0
60 / 57 / 8
Регистрация: 22.07.2011
Сообщений: 436
03.10.2011, 21:40  [ТС]
Цитата Сообщение от bigredcat Посмотреть сообщение
А что MSDN? Using Tab Controls
А целого кода нету?
0
 Аватар для Aneron
166 / 164 / 27
Регистрация: 20.04.2010
Сообщений: 607
03.10.2011, 21:51
подключи windows.h
0
60 / 57 / 8
Регистрация: 22.07.2011
Сообщений: 436
03.10.2011, 21:54  [ТС]
Цитата Сообщение от Aneron Посмотреть сообщение
подключи windows.h
Первую проблему решил уже. Если не трудно, можно пример использования вкладок(целый код)
0
 Аватар для Aneron
166 / 164 / 27
Регистрация: 20.04.2010
Сообщений: 607
03.10.2011, 22:10
могу. но тока послезавтра. все на рабочем компе.
0
60 / 57 / 8
Регистрация: 22.07.2011
Сообщений: 436
03.10.2011, 22:40  [ТС]
Цитата Сообщение от Aneron Посмотреть сообщение
могу. но тока послезавтра. все на рабочем компе.
Буду ждать, заранее спс.
0
 Аватар для Aneron
166 / 164 / 27
Регистрация: 20.04.2010
Сообщений: 607
04.10.2011, 15:08
http://msdn.microsoft.com/en-u... sg_process
или ....
не стану приводить свои примеры. просто будет сложней понять.

 Комментарий модератора 
Ссылки на сторонние форумы запрещены
0
60 / 57 / 8
Регистрация: 22.07.2011
Сообщений: 436
04.10.2011, 15:42  [ТС]
Цитата Сообщение от Aneron Посмотреть сообщение
http://msdn.microsoft.com/en-us/libr...tc_msg_process
или ....
не стану приводить свои примеры. просто будет сложней понять.
Всё сделал как 4pda.ru,
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
105
106
107
108
109
110
111
112
#include <windows.h>
#include <commctrl.h>
 
#define ID_BUTTON 1002
#define ID_BUTTON2 1003
 
BOOL RegClass(WNDPROC, LPCTSTR, UINT);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
void thread1(void);
void thread2(void);
 
HWND hwndglobal;
 
HINSTANCE hInstance;
 
char szClassName[] = "Class";
char szTitle[] = "Вкладки";
 
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow)
{
InitCommonControls();
 
 MSG msg;
 HWND hwnd;
 hInstance = hInst;
 
 if(!RegClass(WndProc, szClassName, COLOR_WINDOW))
 return FALSE;
 
 if(!(hwnd = CreateWindow(szClassName,
                          szTitle,
                          WS_OVERLAPPEDWINDOW|WS_VISIBLE,
                          100,
                          50,
                          640,
                          480,
                          0,
                          0,
                          hInstance,
                          NULL)))
                          return FALSE;
                          
hwndglobal = hwnd;
                          
while(GetMessage(&msg, 0, 0, 0))
{
 TranslateMessage(&msg);
 DispatchMessage(&msg);
}
 
return msg.wParam;
}
 
BOOL RegClass(WNDPROC Proc, LPCTSTR szName, UINT brBackground)
{
 WNDCLASS wc;
 wc.style = wc.cbClsExtra = wc.cbWndExtra = 0;
 wc.lpfnWndProc = Proc;
 wc.hInstance = hInstance;
 wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
 wc.hCursor = LoadCursor(NULL, IDC_ARROW);
 wc.hbrBackground = (HBRUSH)(brBackground + 1);
 wc.lpszMenuName = (LPCTSTR)NULL;
 wc.lpszClassName = szName;
 return (RegisterClass(&wc) != 0);
}
 
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
 int wmId;
  TC_ITEM tabitem;
  static HWND d;
  static HWND tab[3];  
    
 static HWND hButton1, hButton2, hTControl1, hTControl2;
 
 switch(msg)
 {
  case WM_CREATE:
        {
         hTControl1 = CreateWindow(WC_TABCONTROL,NULL,WS_CHILD|WS_VISIBLE,0,0,240,268,hwnd,NULL,hInstance,NULL);
         tabitem.mask=TCIF_TEXT;
   tabitem.iImage=0;
   tabitem.pszText="1st tab";
   SendMessage(d,TCM_INSERTITEM,1,LPARAM(&tabitem));
   tabitem.pszText="2nd tab";
   tabitem.iImage=1;
   SendMessage(d,TCM_INSERTITEM,1,LPARAM(&tabitem));
   tabitem.pszText="3d tab";
   tabitem.iImage=2;
   SendMessage(d,TCM_INSERTITEM,1,LPARAM(&tabitem));
   tab[0]=CreateWindow("button","kn1",WS_CHILD|WS_VISIBLE,30,30,40,68,d,NULL,hInstance,NULL);
   tab[1]=CreateWindow("button","kn2",WS_CHILD,30,30,40,68,d,NULL,hInstance,NULL);
   tab[2]=CreateWindow("button","kn3",WS_CHILD,30,30,40,68,d,NULL,hInstance,NULL);
        return 0;
}
 
case WM_NOTIFY:
  if(((LPNMHDR)lParam)->code==TCN_SELCHANGE){
   wmId=SendMessage(d,TCM_GETCURSEL,0,0);
   for(int i=0;i<3;i++)ShowWindow(tab[i],SW_HIDE);
   ShowWindow(tab[wmId],SW_SHOW);
  }
  break;
     case WM_DESTROY:
            {
             PostQuitMessage(0);
             return 0;
            }
    }
    return DefWindowProc(hwnd, msg, wParam, lParam);
}
Но всё ничё не поменялось. Вот так:
0
 Аватар для Aneron
166 / 164 / 27
Регистрация: 20.04.2010
Сообщений: 607
04.10.2011, 15:54
не удивительно.
C++
1
2
hTControl1 = CreateWindow(WC_TABCONTROL,NULL,WS_CHILD|WS_VISIBLE,0,0,240,268,hwnd,NULL,hInstance,NULL);
SendMessage(d,TCM_INSERTITEM,1,LPARAM(&tabitem));
ты создал таб контрол с хендлом hTControl1 . Но хочешь добавить вкладки какому то таб контролу d. Причем первый хендл у тебя не объявлен.

SendMessage(d,TCM_INSERTITEM,1,LPARAM(&t abitem)); - ты все время пытаещься вставить вкладки под одним индексом(в одно место)
1
04.10.2011, 18:57

Не по теме:

Цитата Сообщение от Aneron Посмотреть сообщение
могу. но тока послезавтра. все на рабочем компе.
тоже могу, но только в 2060 году, все в машине времени :D

0
Brainsbreaker
 Аватар для Digit@ll
899 / 374 / 54
Регистрация: 01.02.2011
Сообщений: 1,608
04.10.2011, 19:28
Я бы никогда такое не делал: wc.style = wc.cbClsExtra = wc.cbWndExtra = 0;
0
60 / 57 / 8
Регистрация: 22.07.2011
Сообщений: 436
04.10.2011, 20:37  [ТС]
Цитата Сообщение от Aneron Посмотреть сообщение
не удивительно.
C++
1
2
hTControl1 = CreateWindow(WC_TABCONTROL,NULL,WS_CHILD|WS_VISIBLE,0,0,240,268,hwnd,NULL,hInstance,NULL);
SendMessage(d,TCM_INSERTITEM,1,LPARAM(&tabitem));
ты создал таб контрол с хендлом hTControl1 . Но хочешь добавить вкладки какому то таб контролу d. Причем первый хендл у тебя не объявлен.

SendMessage(d,TCM_INSERTITEM,1,LPARAM(&t abitem)); - ты все время пытаещься вставить вкладки под одним индексом(в одно место)
А, да. Спс=) всё получилось.

Добавлено через 12 секунд
Цитата Сообщение от Digit@ll Посмотреть сообщение
Я бы никогда такое не делал: wc.style = wc.cbClsExtra = wc.cbWndExtra = 0;
почему?
0
183 / 181 / 66
Регистрация: 15.02.2015
Сообщений: 515
30.03.2015, 13:10
Такой вопрос по TabControl: есть ли возможность переключения по вкладкам комбинацией Ctrl+Tab (при наличии фокуса на одной из вкладок) без отслеживания нажатия клавиш в оконной процедуре?

зы: не по темен, но всё же, как получить указатель на CREATESTRUCT при создании элемента управления. Сообщение WM_CREATE ловлю в обработчике WM_PARENTNOTIFY, при этом единственная связь с контролом на данном этапе, это его ID, хотелось бы получать указатель какой-нибудь. Сабклассинг подключается уже после создания элемента, тут никак. Вызов метода-обработчика "OnCreate(...)" просто после выполнения CreateWindowEx выглядит некрасиво
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.03.2015, 13:10
Помогаю со студенческими работами здесь

Обработчик событий TabControl
Привет, как сделать обработчик событий для TabControl ? рисую TabControl так: LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM...

Диалоговое окно и TabControl
Здравствуйте! У меня есть диалоговое окно, которое хранится в файле ресурсов. Мне нужно добавить на него TabControl с двумя вкладками, но...

TABCONTROL и дочерние элементы
Есть диалоговое окно, в нём создал кучу элементов типа кнопочек и т.п. И тут стало необходимо добавить TABCONTROL, однако после того как...

Как работать с TabControl?
Здравствуйте. Создал TabControl, но не знаю как с ним работать. Например: Создал кнопку, но она отображается во всех вкладках, а я хочу,...

Фон вкладки tabcontrol
Начал изучать WinAPI. Пытаюсь реализовать работу вкладок. Нашел как они добавлюятся, получился такой файлик #include &lt;windows.h&gt;...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru