Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 05.05.2019
Сообщений: 1

Таблицы winapi

05.05.2019, 12:35. Показов 2084. Ответов 0

Студворк — интернет-сервис помощи студентам
Изучаю WINAPI.
Брал у кого-то с киберфорума данныи листинг. Выдаёт кучу ошибок.
Начиная от "значение типа <const char> нельзя исп.... для char"строки 41-42(пытался зафиксить ошибку путём добавления const перед char, работало, но появлялась другая ошибка в строках 49-53)
Заканчивая "отсутствует ; перед lParam/lvc/lvi" в строках ниже. как фиксить, не понимаю.
Вижак 17

C++ (Qt)
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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
#include <windows.h>
#include <commctrl.h>
#include "resource.h"
#include <windowsx.h>
#include "stdafx.h"
 
#pragma comment(lib, "ComCtl32.Lib")
 
 
// Приложение на основе модального диалогового окна.
 
// IDD_MAIN - идентификатор диалога
// IDC_STATIC1 - идентификатор надписи Static, куда выдодится результат
#define IDC_LISTVIEW                      1111
#define IDD_MAIN    1112
#define IDC_STATIC1 1113
 
 
LRESULT CALLBACK MainDlgProc(HWND, UINT, WPARAM, LPARAM);
HWND CreateListView(HWND hWndParent, UINT uId);
int SetListViewColumns(HWND hWndLV, int colNum, int textMaxLen, char** header);
BOOL WINAPI AddListViewItems(HWND hWndLV, int colNum, int textMaxLen, char** item);
 
 
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE, LPTSTR, int)
{
    INT_PTR nResult = DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAIN), NULL, (DLGPROC)MainDlgProc);
    if (nResult <= 0) MessageBox(NULL, "Невозможно создать диалоговое окно", "Ошибка", MB_OK);
 
    return (nResult);
}
 
 
LRESULT CALLBACK MainDlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    static HWND hWndLV = NULL;
 
    int const colNum = 3;
    int const itemNum = 3;
    int const textMaxLen = 10;
    char* header[colNum] = { "Item", "Subitem0", "Subitem2" };
    char* item[itemNum][colNum] = { "00", "01", "02", "10", "11", "12", "20", "21", "22" };
 
    switch (uMsg)
    {
    case WM_INITDIALOG:
        if ((hWndLV = CreateListView(hWnd, IDC_LISTVIEW)) == NULL)
            MessageBox(NULL, "Невозможно создать элемент ListView", "Ошибка", MB_OK);
        SetListViewColumns(hWndLV, colNum, textMaxLen, header);
        AddListViewItems(hWndLV, colNum, textMaxLen, item[0]);
        AddListViewItems(hWndLV, colNum, textMaxLen, item[1]);
        AddListViewItems(hWndLV, colNum, textMaxLen, item[2]);
        ShowWindow(hWndLV, SW_SHOWDEFAULT);
        break;
 
    case WM_COMMAND:
        if (wParam == IDOK) EndDialog(hWnd, 1);
        break;
 
        // Сообщение от элемента управления
    case WM_NOTIFY:
        // Общий заголовок сообщения для элементов управления.
        LPNMHDR lpnmHdr;
        lpnmHdr = (LPNMHDR)lParam;
        // Проверяем, что сообщение от ListView, а событие - "щелчек ЛКМ"
        if ((lpnmHdr->idFrom == IDC_LISTVIEW) && (lpnmHdr->code == NM_CLICK))
        {
            // Структура, содержащая полные данные сообщение от ListView
            LPNMLISTVIEW pnmLV = (LPNMLISTVIEW)lParam;
            char buf[10] = "??";
 
            // Копируем строку в буфер из ячейки ListView (pnmLV->iItem - номер строки;
            // pnmLV->iSubItem - номер столбца)
            ListView_GetItemText(lpnmHdr->hwndFrom, pnmLV->iItem, pnmLV->iSubItem, buf, 10);
 
            HWND hWndStatic = GetDlgItem(hWnd, IDC_STATIC1);
            SetWindowText(hWndStatic, buf);
        }
        break;
 
    default:
        return FALSE;
    }
    return TRUE;
}
 
BOOL WINAPI AddListViewItems(HWND hWndLV, int colNum, int textMaxLen, char** item)
{
    int iLastIndex = ListView_GetItemCount(hWndLV);
 
    LVITEM lvi;
    lvi.mask = LVIF_TEXT;
    lvi.cchTextMax = textMaxLen;
    lvi.iItem = iLastIndex;
    lvi.pszText = item[0];
    lvi.iSubItem = 0;
 
    if (ListView_InsertItem(hWndLV, &lvi) == -1)
        return FALSE;
    for (int i = 1; i < colNum; i++)
        ListView_SetItemText(hWndLV, iLastIndex, i, item[i]);
 
    return TRUE;
}
 
int SetListViewColumns(HWND hWndLV, int colNum, int textMaxLen, char** header)
{
    RECT rcl;
    GetClientRect(hWndLV, &rcl);
 
    int index = -1;
 
    LVCOLUMN lvc;
    lvc.mask = LVCF_TEXT | LVCF_WIDTH;
    lvc.cx = (rcl.right - rcl.left) / colNum;
    lvc.cchTextMax = textMaxLen;
 
    for (int i = 0; i < colNum; i++)
    {
        lvc.pszText = header[i];
        index = ListView_InsertColumn(hWndLV, i, &lvc);
        if (index == -1) break;
    }
 
    return index;
}
 
HWND CreateListView(HWND hWndParent, UINT uId)
{
    INITCOMMONCONTROLSEX icex;
    icex.dwSize = sizeof(INITCOMMONCONTROLSEX);
    icex.dwICC = ICC_LISTVIEW_CLASSES;
    InitCommonControlsEx(&icex);
 
    RECT rcl;
    GetClientRect(hWndParent, &rcl);
 
    HWND hWndLV = CreateWindow(WC_LISTVIEW, "",
        WS_CHILD | LVS_REPORT,
        0, 0, rcl.right - rcl.left, rcl.bottom - rcl.top - 50,
        hWndParent, (HMENU)uId, GetModuleHandle(NULL), NULL);
 
    // Чтобы определялись строка (item) и столбец (subitem) обязательно устанавливаем
    // расширенный стиль LVS_EX_FULLROWSELECT.
    ListView_SetExtendedListViewStyleEx(hWndLV, 0, LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
 
    return (hWndLV);
}
Вообще буду признателен, если кто-то поможет в освоении этои темы.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.05.2019, 12:35
Ответы с готовыми решениями:

с++, таблицы, WinAPI
Всем доброго времени суток! Задали делать курсовой по системному программированию, тема звучит так &quot;Создание и наполнение таблиц на...

Заполнение таблицы на WINAPI
Таблицу я создал, а вот как ее заполнить даже и не знаю, ни одной нормальной мысли нету(( Помогите плиз ее заполнить, знаю что надо...

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

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.05.2019, 12:35
Помогаю со студенческими работами здесь

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

Создание таблицы средствами WinAPI VS 2010
InitCommonControls(); /*Растяним таблицу по ширине окна*/ RECT rc; GetClientRect(hWnd, &amp;rc); /*Создаем...

Слейте две линейные таблицы A и B в новую таблицу C, поставив элементы таблицы A на нечетные места, а элементы таблицы B – на четные
Помогите пожалуйста с решением. Слейте две линейные таблицы A и B в новую таблицу C, поставив элементы таблицы A на нечетные места, а...

Выбрать данные из таблицы и заменить один столбец с id значениями из другой таблицы
Есть таблица A: A.ID | A.B_ID и таблица B: B.ID | B.TEXT где A.B_ID -&gt; B.ID является указателем на соответствующую строку в...

Как указать в запросе имя таблицы, записанное в ячейке этой таблицы
Добрый день. Помогите пожалуйста решить проблему: Есть таблица 'budget' со следующей структурой: магазин | категория магазина |...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru