Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/34: Рейтинг темы: голосов - 34, средняя оценка - 4.97
188 / 120 / 4
Регистрация: 23.01.2010
Сообщений: 1,320

Создание таблицы средствами WinAPI VS 2010

25.09.2016, 16:37. Показов 7784. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
InitCommonControls();
            
            /*Растяним таблицу по ширине окна*/
            RECT rc;
            GetClientRect(hWnd, &rc);
 
            /*Создаем таблицу*/
            HWND hwndList = CreateWindowEx(0L, WC_LISTVIEW, "",
                WS_VISIBLE | WS_CHILD | WS_BORDER | LVS_REPORT | 
                LVS_EDITLABELS,
                0, 0, rc.right, rc.bottom,
                hWnd, NULL, hInstanceA1, NULL);
 
            /*Попробуем вставить столбцы*/
 
            LV_COLUMN lvc;
 
            memset(&lvc, 0, sizeof(lvc));
            lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
            lvc.fmt = LVCFMT_LEFT;
            lvc.cx = 40;
 
            lvc.iSubItem = 0;
            lvc.pszText = "№";
            ListView_InsertColumn(hwndList, 0, &lvc);
 
            lvc.cx = 100;
 
            lvc.iSubItem = 1;
            lvc.pszText = "Дата";
            ListView_InsertColumn(hwndList, 1, &lvc);
 
            lvc.iSubItem = 2;
            lvc.pszText = "Регистратор";
            ListView_InsertColumn(hwndList, 2, &lvc);
            ListView_SetColumnWidth(hwndList,2,100);
 
            lvc.iSubItem = 3;
            lvc.pszText = "Состояние";
            ListView_InsertColumn(hwndList, 3, &lvc);
            ListView_SetColumnWidth(hwndList,3,100);
 
            lvc.iSubItem = 4;
            lvc.pszText = "Номер ключа";
            ListView_InsertColumn(hwndList, 4, &lvc);
            ListView_SetColumnWidth(hwndList,4,100);
 
 
            lvc.iSubItem = 5;
            lvc.pszText = "Владелец";
            ListView_InsertColumn(hwndList, 5, &lvc);
            ListView_SetColumnWidth(hwndList,5,100);
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.09.2016, 16:37
Ответы с готовыми решениями:

Создание Panel средствами WinApi
Здравствуйте! Подскажите каким образом можно создать Panel средствами Win Api. (см. вложение) Желательно второй вариант панели!...

Создание тулбара средствами WinAPI
Привет Я осваиваю WinApi, а точнее создание mdi его средствами, вот дошел создания туллбара и... короче, я в шоке :) Пишу я в VC++...

Создание простейшего окна средствами WinApi
Здравствуйте. Читаю книгу "Проектирование интерфейса пользователя средствами Win32 API" Ганеева, в которой рассматривается...

7
188 / 120 / 4
Регистрация: 23.01.2010
Сообщений: 1,320
25.09.2016, 16:39  [ТС]
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
25.09.2016, 19:02
Это вопрос или ликбез?
0
188 / 120 / 4
Регистрация: 23.01.2010
Сообщений: 1,320
25.09.2016, 22:43  [ТС]
Цитата Сообщение от castaway Посмотреть сообщение
Это вопрос или ликбез?
Это и вопрос и ликбес - не могу просто добавить строки в таблицу.
0
188 / 120 / 4
Регистрация: 23.01.2010
Сообщений: 1,320
26.09.2016, 20:04  [ТС]
для того чтобы в таблице была сетка

надо добавить строку кода
C
1
ListView_SetExtendedListViewStyle(hwndList,LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
0
188 / 120 / 4
Регистрация: 23.01.2010
Сообщений: 1,320
27.09.2016, 14:09  [ТС]
List View Macros
In This Section

ListView_ApproximateViewRect
ListView_Arrange
ListView_CancelEditLabel
ListView_CreateDragImage
ListView_DeleteAllItems
ListView_DeleteColumn
ListView_DeleteItem
ListView_EditLabel
ListView_EnableGroupView
ListView_EnsureVisible
ListView_FindItem
ListView_GetBkColor
ListView_GetBkImage
ListView_GetCallbackMask
ListView_GetCheckState
ListView_GetColumn
ListView_GetColumnOrderArray
ListView_GetColumnWidth
ListView_GetCountPerPage
ListView_GetEditControl
ListView_GetEmptyText
ListView_GetExtendedListViewStyle
ListView_GetFocusedGroup
ListView_GetFooterInfo
ListView_GetFooterItem
ListView_GetFooterItemRect
ListView_GetFooterRect
ListView_GetGroupCount
ListView_GetGroupHeaderImageList
ListView_GetGroupInfo
ListView_GetGroupInfoByIndex
ListView_GetGroupMetrics
ListView_GetGroupRect
ListView_GetGroupState
ListView_GetHeader
ListView_GetHotCursor
ListView_GetHotItem
ListView_GetHoverTime
ListView_GetImageList
ListView_GetInsertMark
ListView_GetInsertMarkColor
ListView_GetInsertMarkRect
ListView_GetISearchString
ListView_GetItem
ListView_GetItemCount
ListView_GetItemIndexRect
ListView_GetItemPosition
ListView_GetItemRect
ListView_GetItemSpacing
ListView_GetItemState
ListView_GetItemText
ListView_GetNextItem
ListView_GetNextItemIndex
ListView_GetNumberOfWorkAreas
ListView_GetOrigin
ListView_GetOutlineColor
ListView_GetSelectedColumn
ListView_GetSelectedCount
ListView_GetSelectionMark
ListView_GetStringWidth
ListView_GetSubItemRect
ListView_GetTextBkColor
ListView_GetTextColor
ListView_GetTileInfo
ListView_GetTileViewInfo
ListView_GetToolTips
ListView_GetTopIndex
ListView_GetUnicodeFormat
ListView_GetView
ListView_GetViewRect
ListView_GetWorkAreas
ListView_HasGroup
ListView_HitTest
ListView_HitTestEx
ListView_InsertColumn
ListView_InsertGroup
ListView_InsertGroupSorted
ListView_InsertItem
ListView_InsertMarkHitTest
ListView_IsGroupViewEnabled
ListView_IsItemVisible
ListView_MapIDToIndex
ListView_MapIndexToID
ListView_MoveGroup
ListView_MoveItemToGroup
ListView_RedrawItems
ListView_RemoveAllGroups
ListView_RemoveGroup
ListView_Scroll
ListView_SetBkColor
ListView_SetBkImage
ListView_SetCallbackMask
ListView_SetCheckState
ListView_SetColumn
ListView_SetColumnOrderArray
ListView_SetColumnWidth
ListView_SetExtendedListViewStyle
ListView_SetExtendedListViewStyleEx
ListView_SetGroupHeaderImageList
ListView_SetGroupInfo
ListView_SetGroupMetrics
ListView_SetGroupState
ListView_SetHotCursor
ListView_SetHotItem
ListView_SetHoverTime
ListView_SetIconSpacing
ListView_SetImageList
ListView_SetInfoTip
ListView_SetInsertMark
ListView_SetInsertMarkColor
ListView_SetItem
ListView_SetItemCount
ListView_SetItemCountEx
ListView_SetItemIndexState
ListView_SetItemPosition
ListView_SetItemPosition32
ListView_SetItemState
ListView_SetItemText
ListView_SetOutlineColor
ListView_SetSelectedColumn
ListView_SetSelectionMark
ListView_SetTextBkColor
ListView_SetTextColor
ListView_SetTileInfo
ListView_SetTileViewInfo
ListView_SetToolTips
ListView_SetUnicodeFormat
ListView_SetView
ListView_SetWorkAreas
ListView_SortGroups
ListView_SortItems
ListView_SortItemsEx
ListView_SubItemHitTest
ListView_SubItemHitTestEx
ListView_Update
0
518 / 410 / 188
Регистрация: 08.04.2013
Сообщений: 1,750
30.09.2016, 18:36
пример может поможет
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
113
114
115
#pragma comment(lib, "comctl32.lib")
#include<windows.h>
#include <commctrl.h>
#include <tchar.h>
 
 
    
//как обновить обычный list view?
//UpdateWindow(hListView);
//Есть специальный макрос ListView_Update
 
 
TCHAR name[3][12]={L"Дима",L"Вова",L"Саша"};
TCHAR mail[3][22]={L"dima@mail.ru",L"vova@mail.ru",L"sasha@mail.ru"};
TCHAR passwd[3][12]={L"qwerty",L"uiop",L"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=L"MainWnd Class";
   RegisterClass(&wc);
    HWND hMainWnd=CreateWindow(L"MainWnd Class",NULL,
 WS_VISIBLE|WS_OVERLAPPEDWINDOW,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,L"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,L"",L"",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 = L"Name";//Название столбца
  ListView_InsertColumn(hListView, 0, &lvc);//Функция вставки столбцов
 
  lvc.iSubItem = 1;
  lvc.pszText = L"Mail";
  ListView_InsertColumn(hListView, 1, &lvc);
 
  lvc.iSubItem = 2;
  lvc.pszText = L"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);
   }
1
188 / 120 / 4
Регистрация: 23.01.2010
Сообщений: 1,320
01.10.2016, 18:32  [ТС]
Вот так можно вставить:

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
113
114
115
116
117
118
119
TCHAR name[3][12]={"Дима","Вова","Саша"};
TCHAR mail[3][22]={"dima@mail.ru","vova@mail.ru","sasha@mail.ru"};
TCHAR passwd[3][12]={"qwerty","uiop","asdff"};
....
 
 
    case WM_CREATE:
        {
 
 
            InitCommonControls();
 
            /*Растяним таблицу по ширине окна*/
            RECT rc;
            GetClientRect(hWnd, &rc);
 
            /*Создаем таблицу*/
            HWND hwndList = CreateWindowEx(0L, WC_LISTVIEW, "",
                WS_VISIBLE| WS_CHILD | WS_BORDER | LVS_REPORT | 
                LVS_EDITLABELS,
                0, 0, rc.right, rc.bottom,
                hWnd, NULL, hInstanceA1, NULL);
            ListView_SetExtendedListViewStyle(hwndList,LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
 
 
 
 
            /*Попробуем вставить столбцы*/
 
            LV_COLUMN lvc;
 
            memset(&lvc, 0, sizeof(lvc));
            lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
            lvc.fmt = LVCFMT_LEFT;
            lvc.cx = 40;
 
            lvc.iSubItem = 0;
            lvc.pszText = "№";
            ListView_InsertColumn(hwndList, 0, &lvc);
 
 
            lvc.cx = 100;
 
            lvc.iSubItem = 1;
            lvc.pszText = "Дата";
            ListView_InsertColumn(hwndList, 1, &lvc);
 
            lvc.iSubItem = 2;
            lvc.pszText = "Регистратор";
            ListView_InsertColumn(hwndList, 2, &lvc);
            ListView_SetColumnWidth(hwndList,2,100);
 
            lvc.iSubItem = 3;
            lvc.pszText = "Состояние";
            ListView_InsertColumn(hwndList, 3, &lvc);
            ListView_SetColumnWidth(hwndList,3,100);
 
            lvc.iSubItem = 4;
            lvc.pszText = "Номер ключа";
            ListView_InsertColumn(hwndList, 4, &lvc);
            ListView_SetColumnWidth(hwndList,4,100);
 
 
            lvc.iSubItem = 5;
            lvc.pszText = "Владелец";
            ListView_InsertColumn(hwndList, 5, &lvc);
 
 
 
    
 
 
 
 
 
  LVITEM lvi;//Строки
 
             // Вставляем строки
  memset(&lvi, 0, sizeof(lvi));
 
  lvi.mask = LVIF_TEXT|LVIF_TEXT;
  
  for(int i=0; i<25; i++)
  {
    lvi.iItem = i;
    lvi.iSubItem = 0;
    ListView_InsertItem(hwndList, &lvi);
 
    lvi.iItem = i;
    lvi.iSubItem = 1;
    ListView_InsertItem(hwndList, &lvi);
 
    lvi.iItem = i;
    lvi.iSubItem = 2;
    ListView_InsertItem(hwndList, &lvi);
  }
  ///////////////////////////////////////////////
  //Вставить Данные способ ver_1
  for(int i=0;i<3;i++)
  ListView_SetItemText(hwndList,i, 0, name[i]);//Вставить в строку i столбца 0 из массива name
  for(int i=0;i<3;i++)
  ListView_SetItemText(hwndList,i, 1, mail[i]);//Вставить в строку i столбца 1 из массива mail
  for(int i=0;i<3;i++)
  ListView_SetItemText(hwndList,i, 2, passwd[i]);//Вставить в строку i столбца 2 из массива passwd
  ///////////////////////////////////////////////
           
    
 
 
 
 
 
        
 
 
 
 
            break;
        }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.10.2016, 18:32
Помогаю со студенческими работами здесь

Создание таблицы на WinApi
Необходимо создать таблицу с помощью WinApi, с n-ым кол-вом столбцов и с динамическим добавлением строк. ...

Создание таблицы WinApi
Создание таблицы WinApi Весь форум облазел и нет нигде информации по созданию таблицы IxY с помощью api. Знаю что есть класс TreeView...

Многопоточность средствами WinAPI
#include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;Windows.h&gt; using namespace std; HANDLE threads; DWORD _stdcall proc1(CONST...

Выделение памяти средствами WinAPI
Сделал код, но по моему варианту нужно выделить память средствами win api, мой пример работает #define _CRT_SECURE_NO_WARNINGS ...

Сделать скриншот средствами WinAPI
Может есть у кого код функции, чтобы делала скрин рабочего стола и сохраняла в JPG файл ? делаю средствами DirectX ... без него нужно...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru