Win32窗口高级列表控件的使用
1、实现点击按钮就插入一行;//小作业
2、实现点击按钮把界面编辑框的文本插入到列表中;//小作业
3、删除列表中指定的第4行,第5行;//小作业
4、点击按钮获取当前列表中有多少行,并用MessageBox提示出来!//小作业
5、整行选择。
#define _CRT_SECURE_NO_WARNINGS #include <Windows.h> #include <tchar.h> #include <CommCtrl.h> #include <windowsx.h> static TCHAR szWindowClass[] = _T("WindowClass"); //窗口类名称 static TCHAR szTitle[] = _T("标题"); //窗口标题 UINT IDC_LIST_1 = 300; //子列表窗口ID UINT IDC_BUTTON_1 = 400; UINT IDC_BUTTON_2 = 4001; UINT IDC_Edit_1 = 500; //处理发送到窗口的消息 LRESULT CALLBACK WindowProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam) { switch (uMsg) { case WM_CREATE: { HWND hEditControl = CreateWindow(WC_EDIT, _T(""), WS_CHILD | WS_VISIBLE | WS_BORDER | ES_LEFT | WS_VSCROLL | ES_MULTILINE | ES_AUTOVSCROLL, 355, 0, 100, 80, hWnd, (HMENU)IDC_Edit_1, NULL, NULL ); HWND hButtonControl = CreateWindow(WC_BUTTON, _T("实现点击按钮就插入一行"), WS_CHILD | WS_VISIBLE | WS_BORDER | BS_PUSHBUTTON, CW_USEDEFAULT,CW_USEDEFAULT, 200,30, hWnd, (HMENU)IDC_BUTTON_1, NULL,NULL ); HWND hButtonContro2 = CreateWindow(WC_BUTTON, _T("删除列表中4行5行"), WS_CHILD | WS_VISIBLE | WS_BORDER | BS_PUSHBUTTON, 205, 0, 150, 30, hWnd, (HMENU)IDC_BUTTON_2, NULL, NULL ); HWND hListControl = CreateWindow(WC_LISTVIEW, _T(""), WS_CHILD | WS_VISIBLE | LVS_REPORT | LVS_SHOWSELALWAYS | WS_BORDER, 50, 50, 300, 300, hWnd, (HMENU)IDC_LIST_1, NULL, NULL); //整行选择 ListView_SetExtendedListViewStyle(hListControl, LVS_EX_FULLROWSELECT); //扩展列表视图样式 LVCOLUMN colInfo_0 = { 0 }; colInfo_0.mask |= LVCF_WIDTH | LVCF_TEXT; colInfo_0.cx = 100; colInfo_0.pszText = (LPTSTR)_T("第0列"); SendMessage(hListControl, LVM_INSERTCOLUMN, 0, (LPARAM)&colInfo_0); //插入列 LVCOLUMN colInfo_1 = { 0 }; colInfo_1.mask |= LVCF_WIDTH | LVCF_TEXT; colInfo_1.cx = 100; colInfo_1.pszText = (LPTSTR)_T("第1列"); SendMessage(hListControl, LVM_INSERTCOLUMN, 1, (LPARAM)&colInfo_1); LVCOLUMN colInfo_2 = { 0 }; colInfo_2.mask |= LVCF_WIDTH | LVCF_TEXT; colInfo_2.cx = 100; colInfo_2.pszText = (LPTSTR)_T("第2列"); ListView_InsertColumn(hListControl,2, (LPARAM)&colInfo_2); //插入列 //LV_ITEM row_item = { 0 }; //row_item.mask |= LVIF_TEXT; //row_item.pszText = (LPTSTR)_T("AAAA"); //ListView_InsertItem(hListControl,&row_item); //只能插入第0列 //ZeroMemory(&row_item, sizeof(row_item)); //row_item.mask |= LVIF_TEXT; //row_item.pszText = (LPTSTR)_T("BBBB"); //row_item.iItem = 0; //row_item.iSubItem = 1; //ListView_SetItem(hListControl, &row_item); } break; case WM_COMMAND: { UINT nControlID = LOWORD(wParam); UINT nNotificationCode = HIWORD(wParam); if (nNotificationCode == BN_CLICKED) { if (nControlID == IDC_BUTTON_1) { //实现点击按钮把界面编辑框的文本插入到列表中 TCHAR szText[MAX_PATH] = {0}; Edit_GetText(GetDlgItem(hWnd, IDC_Edit_1), szText, MAX_PATH); //实现点击按钮就插入一行 int iTotalRow = ListView_GetItemCount(GetDlgItem(hWnd, IDC_LIST_1)); //获取当前列表中有多少行 LV_ITEM row_item = { 0 }; row_item.mask |= LVIF_TEXT; row_item.pszText = szText; row_item.iItem = iTotalRow; int iRow = ListView_InsertItem(GetDlgItem(hWnd, IDC_LIST_1),&row_item); ListView_SetItemText(GetDlgItem(hWnd, IDC_LIST_1), iRow,1, szText); } if (nControlID == IDC_BUTTON_2) { //点击按钮获取当前列表中有多少行,并用MessageBox提示出来! int ItemCount = ListView_GetItemCount(GetDlgItem(hWnd, IDC_LIST_1)); TCHAR szListItemCount[128] = { 0 }; _stprintf(szListItemCount, _T("共有 %d 行!"), ItemCount); MessageBox(hWnd, szListItemCount,_T("A"),NULL); ZeroMemory(szListItemCount, sizeof(szListItemCount)); //删除列表中指定的第4行,第5行 /*ListView_DeleteItem(GetDlgItem(hWnd, IDC_LIST_1),4); ListView_DeleteItem(GetDlgItem(hWnd, IDC_LIST_1),4);*/ } } } break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, uMsg, wParam, lParam); break; } return 0; } int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance, LPSTR lpCmdLine, INT nCmdShow) { WNDCLASSEX wcex = { 0 }; wcex.cbSize = sizeof(WNDCLASSEX); //此结构的大小 wcex.lpfnWndProc = WindowProc; //指向窗口过程的指针 wcex.lpszClassName = szWindowClass; //指定窗口类名称 if (!RegisterClassEx(&wcex)) //注册一个窗口类 { return 0; //不成功返回0 } HWND hWnd = CreateWindow( szWindowClass, //窗口类名称 szTitle, //标题名称 WS_OVERLAPPEDWINDOW, //窗口样式 CW_USEDEFAULT, CW_USEDEFAULT, //窗口的初始位置 500, 500, //窗口的宽度和高度 NULL, //要创建的窗口的父窗口或所有者窗口的句柄 NULL, //菜单的句柄 hInstance,//“句柄型”数据类型。相当于装入到了内存的资源的ID NULL // ); if (!hWnd) return 0; ShowWindow(hWnd, SW_SHOW); //激活窗口并以其当前大小和位置显示它 MSG msg = { 0 }; while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); //将虚拟键消息转换为字符消息 DispatchMessage(&msg); //将消息调度到窗口过程 } return (int)msg.wParam; }
浙公网安备 33010602011771号