С Новым годом! Форум программистов, компьютерный форум, киберфорум
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. Показов 7699. Ответов 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
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru