Code:
#pragma comment(lib, "comctl32.lib")
#pragma comment(lib, "user32.lib")
#include <windows.h>
#include <commctrl.h>
#define CLASS_NAME "My Example Class Name"
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
HWND hWnd,hWndLV;
HWND hWndAddButton, hWndEditAdd1, hWndEditAdd2, hWndEditAdd3;
int WinMain( HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
INITCOMMONCONTROLSEX iccx;
WNDCLASSEX wcx = {0};
MSG msg;
iccx.dwSize = sizeof(INITCOMMONCONTROLSEX);
iccx.dwICC = ICC_LISTVIEW_CLASSES;
InitCommonControlsEx(&iccx);
wcx.cbSize = sizeof(wcx);
wcx.hbrBackground = (HBRUSH)COLOR_WINDOW;
wcx.hCursor = LoadCursor(NULL, IDC_ARROW);
wcx.hInstance = hInstance;
wcx.lpfnWndProc = WndProc;
wcx.lpszClassName = CLASS_NAME;
RegisterClassEx(&wcx);
hWnd = CreateWindowEx(0, CLASS_NAME, "Example Window",
WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 450, 350,
0, 0, hInstance, 0);
if(hWnd == NULL)
return 0;
hWndLV = CreateWindowEx(WS_EX_CLIENTEDGE, WC_LISTVIEW, "",
LVS_SHOWSELALWAYS | WS_BORDER | WS_CHILD | WS_VISIBLE | LVS_REPORT,
6, 64, 306, 200, hWnd, NULL, hInstance, NULL);
hWndAddButton = CreateWindowEx(0, "BUTTON", "Add",
WS_CHILD | WS_VISIBLE | WS_TABSTOP,
6, 6, 75, 23, hWnd, NULL, hInstance, NULL);
hWndEditAdd1 = CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "Sample Data",
WS_BORDER | WS_CHILD | WS_VISIBLE | WS_TABSTOP,
87, 6, 75, 23, hWnd, NULL, hInstance, NULL);
hWndEditAdd2 = CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "100",
WS_BORDER | WS_CHILD | WS_VISIBLE | WS_TABSTOP,
168, 6, 75, 23, hWnd, NULL, hInstance, NULL);
hWndEditAdd3 = CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "30",
WS_BORDER | WS_CHILD | WS_VISIBLE | WS_TABSTOP,
248, 6, 75, 23, hWnd, NULL, hInstance, NULL);
LV_COLUMN lvc;
lvc.mask = LVCF_TEXT | LVCF_WIDTH;
lvc.pszText = "Text";
lvc.cx = 100;
ListView_InsertColumn(hWndLV, 0, &lvc);
lvc.pszText = "Numbers1";
ListView_InsertColumn(hWndLV, 1, &lvc);
lvc.pszText = "Numbers2";
ListView_InsertColumn(hWndLV, 2, &lvc);
ShowWindow(hWnd, SW_SHOW);
while(GetMessage(&msg, 0, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch(uMsg)
{
case WM_COMMAND:
{
if((HWND)lParam == hWndAddButton)
{
CHAR szText1[200] = {0};
CHAR szText2[200] = {0};
CHAR szText3[200] = {0};
INT iIndex = 0;
LVITEM lvi;
GetWindowText(hWndEditAdd1, szText1, 200);
GetWindowText(hWndEditAdd2, szText2, 200);
GetWindowText(hWndEditAdd3, szText3, 200);
ZeroMemory(&lvi, sizeof(lvi));
lvi.mask = LVIF_TEXT | LVIF_PARAM;
lvi.pszText = szText1;
lvi.iItem = ListView_GetItemCount(hWndLV);
iIndex = ListView_InsertItem(hWndLV, &lvi);
ListView_SetItemText(hWndLV, iIndex, 1, szText2);
ListView_SetItemText(hWndLV, iIndex, 2, szText3);
return 0;
}
break;
}
case WM_CLOSE:
{
DestroyWindow(hWnd);
return 0;
}
case WM_DESTROY:
{
PostQuitMessage(0);
return 0;
}
}
return DefWindowProc(hWnd, uMsg, wParam, lParam);
}