Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
2 / 2 / 2
Регистрация: 27.08.2013
Сообщений: 156

Создать Таблицу

24.12.2013, 16:06. Показов 3752. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день , подскажите пожалуйста чем лучше реализовать таблицу в нутри окна , туда я буду загонять данные с sql-сервера ??? Кучу label рисовать по моему как-то не одыкватно
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.12.2013, 16:06
Ответы с готовыми решениями:

Как создать таблицу?
Народ вот надо в проеге таблицу сделать, но как? Программирую отлько на апи, там ворде нет класса предопределенного типа грд и т.п. ???

WinAPI C - Не могу понять как создать таблицу?
WinAPI C - Не могу понять как создать таблицу? На днях экзамен по информатике, и не как не могу разобраться как создать таблицу в VS...

Как создать таблицу YxN столбцов и строк (VS 2010)?
Как создать таблицу YxN столбцов и строк VS (2010) WinAPI Дали задание уже давно - не могу сделать нет информации. Надо создать таблицу и...

11
87 / 86 / 27
Регистрация: 04.10.2012
Сообщений: 355
24.12.2013, 17:02
List View?
1
2 / 2 / 2
Регистрация: 27.08.2013
Сообщений: 156
25.12.2013, 15:58  [ТС]
Но что-то не работает ...
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
  LRESULT CALLBACK MainWinProc(HWND hw,UINT msg,WPARAM wp,LPARAM lp) {
      HWND LV;
      LVCOLUMN LLN;
      switch (msg) {
case WM_CREATE:
        LV = CreateWindowEx(0L, WC_LISTVIEW, L"", 
                WS_VISIBLE | WS_CHILD | WS_BORDER | LVS_REPORT | LVS_EDITLABELS, 
                5, 100, 300, 300, hw, (HMENU)1008,  
                ((LPCREATESTRUCT) lp) -> hInstance, NULL); 
 
            memset(&LLN, 0, sizeof(LLN)); 
            LLN.mask = LVCF_WIDTH | LVCF_TEXT | LVS_REPORT | LVCF_SUBITEM; 
            LLN.fmt = LVCFMT_LEFT; 
            LLN.iSubItem = 0; 
            LLN.pszText = L"Стлбец"; 
            ListView_InsertColumn(LV, 0, &LLN); 
 
        return 0;
    case WM_DESTROY: 
   PostQuitMessage(0);
   return 0;
   }
   return DefWindowProc(hw,msg,wp,lp);
   }
0
 Аватар для Izual
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
25.12.2013, 17:33
Процедура обработки дочернего окна (ListView и Edit) там есть исходник, сравните заполнение LV.
1
2 / 2 / 2
Регистрация: 27.08.2013
Сообщений: 156
06.01.2014, 15:06  [ТС]
Вроде все заполнил , все равно не отображается.... Прошу подсказки
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
  LRESULT CALLBACK MainWinProc(HWND hw,UINT msg,WPARAM wp,LPARAM lp) {
    //объявление переменных
      HWND HL;
      LV_COLUMN lvcol;
    //обработка сообщений программы
      switch (msg) {
case WM_CREATE:
     HL = CreateWindowEx(0,WC_LISTVIEW,0,WS_CHILD | WS_VISIBLE | LVS_REPORT | LVS_SINGLESEL | WS_BORDER,
                                    5,55,200,150,hw,(HMENU)1010,NULL,NULL);
        ListView_SetExtendedListViewStyle(HL,LVS_EX_FULLROWSELECT);   
        lvcol.mask = LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
        lvcol.fmt = LVCFMT_LEFT;
        for(int index = 0; index < 5; index++)
        {
            lvcol.iSubItem = index;
            lvcol.cx = (int)(700/2-18)/5;
            lvcol.mask = LVCF_TEXT | LVCF_SUBITEM | LVCF_WIDTH  | LVCF_FMT;
            lvcol.fmt  = LVCFMT_LEFT;
            lvcol.pszText = L"GOOD";
            ListView_InsertColumn(HL,index,&lvcol);
        }
 
                return 0;
    case WM_DESTROY: 
   PostQuitMessage(0);
   return 0;
   }
   return DefWindowProc(hw,msg,wp,lp);
   }
0
 Аватар для Izual
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
06.01.2014, 15:52
HoseMose, за вас ваши "недосмотрел" искать врятли кто то будет, берите свой код и оригинал и сравнивайте - где что упустили.
П.С. сам то ListView отображается ? И почему у вас нет идентификатора ListView (написано NULL)?
1
2 / 2 / 2
Регистрация: 27.08.2013
Сообщений: 156
08.01.2014, 22:04  [ТС]
Ну вот как то так , только теперь надо найти как обращаться к элементам списка ... Как разберусь выложу свою хавту.
В include #pragma comment(lib, "comctl32.lib")
После WinMain вставить :
InitCommonControls();//регистрирует классы окна такие как ListView, TreeView, и.т.д.

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
  LRESULT CALLBACK MainWinProc(HWND hw,UINT msg,WPARAM wp,LPARAM lp) {
     static HWND hListView;
     LV_COLUMN lvc;//Столбцы
     LV_ITEM lvi;//Строки
     switch (msg) {
case WM_CREATE:
    {
hListView = CreateWindow(WC_LISTVIEW,"GOOD", 
                        LVS_REPORT|WS_CHILD|WS_VISIBLE|WS_CLIPSIBLINGS|LVS_AUTOARRANGE,
                        0, 0, 225, 180, hw,
                        (HMENU) 1010, hInstance, NULL);
 
                        if(hListView==NULL)
                        MessageBox(hw,"","",MB_OK);
  // Вставляем столбцы
                        ////////////////////////////////////////
                          // Вставляем столбцы
  //memset(&lvc, 0, sizeof(lvc));//закидать нулями  первые 0 байт
 
  lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;//Стиль таблицы
  //Как будет смотреться заголовок столбца , в моем случае 
  //выравнивание по левому краю
  lvc.fmt = LVCFMT_LEFT;
  lvc.cx = 75;//Длина столбца относительно левого края 
  
  lvc.iSubItem = 0;//Индекс столбца
  lvc.pszText = "Name";//Название столбца
  ListView_InsertColumn(hListView, 0, &lvc);//Функция вставки столбцов
 
  lvc.iSubItem = 1;
  lvc.pszText = "Mail";
  ListView_InsertColumn(hListView, 1, &lvc);
 
  lvc.iSubItem = 2;
  lvc.pszText = "Password";
  ListView_InsertColumn(hListView, 2, &lvc);
                        ////////////////////////////////////////
    // Вставляем строки
  memset(&lvi, 0, sizeof(lvi));
 
  lvi.mask = LVIF_IMAGE | LVIF_TEXT | LVIF_PARAM;
  lvi.pszText = LPSTR_TEXTCALLBACK;
  
  for(int i=0; i<9; i++)
  {
    lvi.iItem = i;
    lvi.iSubItem = 0;
    lvi.cchTextMax = 40;
     lvi.lParam = (LPARAM)&rgApplInfo[i];
 
    lvi.iImage = i;
    ListView_InsertItem(hListView, &lvi);
 
    lvi.iItem = i;
    lvi.iSubItem = 1;
    ListView_InsertItem(hListView, &lvi);
 
    lvi.iItem = i;
    lvi.iSubItem = 2;
    ListView_InsertItem(hListView, &lvi);
  }
  
////////////////////////////////////////////////////////////////
        return 0;
    }
    case WM_DESTROY: 
   PostQuitMessage(0);
   return 0;
   }
   return DefWindowProc(hw,msg,wp,lp);
   }
0
2 / 2 / 2
Регистрация: 27.08.2013
Сообщений: 156
11.01.2014, 11:16  [ТС]
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
#pragma comment(lib, "comctl32.lib")
#include<windows.h>
#include <commctrl.h>
 
 
char name[3][12]={"Дима","Вова","Саша"};
char mail[3][22]={"dima@mail.ru","vova@mail.ru","sasha@mail.ru"};
char passwd[3][12]={"qwerty","uiop","asdff"};
 
LRESULT CALLBACK MainWinProc(HWND,UINT,WPARAM,LPARAM);
HINSTANCE hInstance;
 
int WINAPI WinMain(HINSTANCE hInst,HINSTANCE,LPSTR,int ss) {
WNDCLASS wc;
    wc.style=0;
    wc.lpfnWndProc=MainWinProc;
    wc.cbClsExtra=wc.cbWndExtra=0;
    wc.hInstance=hInst;
    wc.hIcon=NULL;
    wc.hCursor=NULL;
    wc.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);//ÔÎÍ
    wc.lpszMenuName=NULL;
    wc.lpszClassName="MainWnd Class";
   RegisterClass(&wc);
    HWND hMainWnd=CreateWindow("MainWnd Class",NULL,
 WS_BORDER|WS_VISIBLE,150,75,285,250,NULL,NULL,hInst,NULL);
  ShowWindow(hMainWnd,ss);
   UpdateWindow(hMainWnd);
    MSG msg; /* öèêë îáðàáîòêè ñîáûòèé */
 while (GetMessage(&msg,NULL,0,0)) {
  TranslateMessage(&msg);
   DispatchMessage(&msg); 
 }
 return msg.wParam; 
 }
 LRESULT CALLBACK MainWinProc(HWND hw,UINT msg,WPARAM wp,LPARAM lp) {
     static HWND hListView;
     LVCOLUMN lvc;//Столбцы
     LVITEM lvi;//Строки
     switch (msg) {
case WM_CREATE:
    {
hListView = CreateWindow(WC_LISTVIEW,"GOOD", 
                        LVS_REPORT|WS_CHILD|WS_VISIBLE|WS_CLIPSIBLINGS|LVS_AUTOARRANGE,
                        0, 0, 225, 180, hw,
                        (HMENU) 1010, hInstance, NULL);
 
                        if(hListView==NULL)
                        MessageBox(hw,"","",MB_OK);
  // Вставляем столбцы
                        ////////////////////////////////////////
                          // Вставляем столбцы
  //memset(&lvc, 0, sizeof(lvc));//закидать нулями  первые 0 байт
 
  lvc.mask = LVCF_TEXT | LVCF_SUBITEM | LVCF_WIDTH | LVCF_FMT;//Стиль таблицы
  //Как будет смотреться заголовок столбца , в моем случае 
  //выравнивание по левому краю
  lvc.fmt = LVCFMT_LEFT;
  lvc.cx = 75;//Длина столбца относительно левого края 
  
  lvc.iSubItem = 0;//Индекс столбца
  lvc.pszText = "Name";//Название столбца
  ListView_InsertColumn(hListView, 0, &lvc);//Функция вставки столбцов
 
  lvc.iSubItem = 1;
  lvc.pszText = "Mail";
  ListView_InsertColumn(hListView, 1, &lvc);
 
  lvc.iSubItem = 2;
  lvc.pszText = "Password";
  ListView_InsertColumn(hListView, 2, &lvc);
                        ////////////////////////////////////////
    // Вставляем строки
  memset(&lvi, 0, sizeof(lvi));
 
  lvi.mask = LVIF_TEXT|LVIF_TEXT;
  
  for(int i=0; i<9; i++)
  {
    lvi.iItem = i;
    lvi.iSubItem = 0;
    ListView_InsertItem(hListView, &lvi);
 
    lvi.iItem = i;
    lvi.iSubItem = 1;
    ListView_InsertItem(hListView, &lvi);
 
    lvi.iItem = i;
    lvi.iSubItem = 2;
    ListView_InsertItem(hListView, &lvi);
  }
  ///////////////////////////////////////////////
  //Вставить Данные способ ver_1
  for(int i=0;i<3;i++)
  ListView_SetItemText(hListView,i, 0, name[i]);//Вставить в строку i столбца 0 из массива name
  for(int i=0;i<3;i++)
  ListView_SetItemText(hListView,i, 1, mail[i]);//Вставить в строку i столбца 1 из массива mail
  for(int i=0;i<3;i++)
  ListView_SetItemText(hListView,i, 2, passwd[i]);//Вставить в строку i столбца 2 из массива passwd
  ///////////////////////////////////////////////
            return 0;
    }
    case WM_DESTROY: 
   PostQuitMessage(0);
   return 0;
   }
   return DefWindowProc(hw,msg,wp,lp);
   }
////////////////////////////////////////////////////////////////
2
 Аватар для Izual
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
12.01.2014, 04:41
Так получилось всё или какие то проблемы остались?..
1
2 / 2 / 2
Регистрация: 27.08.2013
Сообщений: 156
15.01.2014, 16:19  [ТС]
Все что хотел на данный момент реализовал ) Спасибо !

Добавлено через 27 минут
Хотя проблема есть , тот же самый код , без проблем компилируется на win8 в visual и работает, а в ХР компилируется без ошибок и таблица не создается.... Так что прошу взглянуть
0
 Аватар для Izual
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
15.01.2014, 16:26
Цитата Сообщение от HoseMose Посмотреть сообщение
Все что хотел на данный момент реализовал ) Спасибо !

Добавлено через 27 минут
Хотя проблема есть , тот же самый код , без проблем компилируется на win8 в visual и работает, а в ХР компилируется без ошибок и таблица не создается.... Так что прошу взглянуть
Перед опеределением ListView, обычно это делается в Main, нужно прописать:
C++
1
InitCommonControls();
1
2 / 2 / 2
Регистрация: 27.08.2013
Сообщений: 156
15.01.2014, 16:33  [ТС]
Спасибо , сам же в самом начале писал про это , что надо после WinMain вставлять)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.01.2014, 16:33
Помогаю со студенческими работами здесь

Создать приложение, отображающее рисунок, таблицу и текст с возможностью распечатать каждый объект
Добрый вечер! Господа, как создать приложение, отображающее рисунок, таблицу и текст с возможностью распечатать каждый объект? Поделитесь,...

Не получается создать таблицу (отсутствует пункт "Создать таблицу")
Здравствуйте. Пытаюсь создать базу данных и сталкиваюсь с наиглупейшей проблемой - в контекстном меню отсутствует пункт &quot;Добавить...

создать таблицу базы данных в Accesse.Определить связи между табл.один ко многим.Создать форму.Создать 3 запроса и не менее двух отчётов.
Исходные данные:ЖЭК:ФИО слесаря,адрес слесаря, перечень выполняемых работ,перечень обслуживаемых улиц,номер дома,в котором организован...

1) Создать Базу данных (Имя , Фамилия, Отчество) 2) Создать таблицу в Базе данных (состоящия из 3 столбцов(а,б,с) и 3 строк int) 3)Создать пользовате
Задача помогите незнаю ваще как даже сделать. Заранее спасибо большое: 1) Создать Базу данных (Имя , Фамилия, Отчество) 2) Создать...

Создать файл который сможет создать таблицу в базе данных
У меня есть код он создает таблицу когда я нахожусь в phpmyadmin и делаю SQL-запрос, вопрос такой- как переписать этот код в php-файл чтобы...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
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] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru