Последние записи
- Преобразовать массив байт в вещественное число (single)
- TChromium (CEF3), сохранение изображений
- Как в Delphi XE обнулить таймер?
- Изменить цвет шрифта TextBox на форме
- Ресайз PNG без потери прозрачности
- Вывод на печать графического файла
- Взаимодействие через командную строку
- Перенести программу из Delphi в Lazarus
- Определить текущую ОС
- Автоматическая смена языка (раскладки клавиатуры)
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
17th
Ноя
Работа с VirtualListView
Posted by maloy under си шарп
Как виртуализировать этот список?
Используя LVS_OWNERDATA.
//создаем list view
#include <windows.h>
#include "resource.h"
#include <CommCtrl.h>
#pragma comment(lib, "comctl32")
BOOL CALLBACK DlgProc(HWND,UINT,WPARAM,LPARAM);
//void DlgOnCommand(HWND,int,HWND,UINT);
//BOOL DlgOnInitDialog(HWND,HWND,LPARAM);
HINSTANCE hInstance;
int WINAPI WinMain(HINSTANCE hlnst,HINSTANCE,LPSTR,int)
{
hInstance=hlnst;
InitCommonControls();
DialogBox(hlnst,MAKEINTRESOURCE(IDD_DIALOG),NULL,DlgProc);
return 0;
}
BOOL CALLBACK DlgProc(HWND hwnd,UINT msg, WPARAM wParam,LPARAM lParam)
{
switch(msg)
{
case WM_INITDIALOG:
{
char szName[]="имя файла";
char szSize[]="размер файла";
char szFileName[80];
char szFileSize[10]="9999.99";
// DWORD dwFileSize;
int nItemIndex=0;
HWND hWndList= CreateWindowEx(0, WC_LISTVIEW, NULL, WS_CHILD|WS_BORDER|WS_VISIBLE|LVS_REPORT
,20,15, 270, 250, hwnd, NULL, hInstance,NULL);
//-----------------------------------------------------------------------
//заголовок
LV_COLUMN lvc;
ZeroMemory(&lvc,sizeof(lvc));
lvc.mask=LVCF_FMT|LVCF_SUBITEM|LVCF_TEXT|LVCF_WIDTH;
lvc.fmt=LVCFMT_LEFT;//выравнивание
lvc.cx=150;
lvc.pszText=(LPSTR)szName;
ListView_InsertColumn(hWndList,0,&lvc);
lvc.cx=120;
lvc.pszText=(LPSTR)szSize;
ListView_InsertColumn(hWndList,1,&lvc);
//-----------------------------------------------------------------------
//список
LV_ITEM lvi;
ZeroMemory(&lvi,sizeof(lvi));
lvi.mask=LVIF_TEXT;
//lvc.pszText=szFileName;
strcpy (szFileName,"filename");
for(int i=0;i!=20;i++)
{
lvi.iItem=nItemIndex;
ListView_InsertItem(hWndList,&lvi);
ListView_SetItemText(hWndList,nItemIndex,0,(LPSTR)szFileName);
ListView_SetItemText(hWndList,nItemIndex,1,(LPSTR)szFileSize);
nItemIndex++;
}
return TRUE;
}
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDOK:
case IDCANCEL:
EndDialog(hwnd,0);
break;
}
default:
return FALSE;
}
}
waleri
Сначала через WM_SETITEMCOUNT сообщаем сколько строчек будет, а потом обрабатываем LVN_GETDISPINFO.
Случайные статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)