模态对话框的消息响应
1、课后自己拖拽控件,实现向模态对话框中添加 ListCtrl 高级列表控件;
2、实现在初始化的时候向 ListCtrl 控件中添加 3行2列 的数据;
3、实现点击任意按钮弹出提示框,显示当前 ListCtrl 控件中有几行几列的数据!
#include <Windows.h> #include <tchar.h> #include <CommCtrl.h> #include "resource.h" INT_PTR WINAPI MyDialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_INITDIALOG: { MessageBox(hwndDlg, _T("窗口初始化"), _T(""), NULL); ListView_SetExtendedListViewStyle(GetDlgItem(hwndDlg, IDC_LIST1), LVS_EX_FULLROWSELECT | LVS_EX_HEADERDRAGDROP | LVS_EX_GRIDLINES | LVS_EX_AUTOCHECKSELECT | LVS_EX_AUTOSIZECOLUMNS); LVCOLUMN ColumnInfo = { 0 }; ColumnInfo.mask |= LVCF_TEXT |LVCF_WIDTH; ColumnInfo.cx = 100; ColumnInfo.pszText = (LPTSTR)_T("第0列"); ListView_InsertColumn(GetDlgItem(hwndDlg, IDC_LIST1),0, &ColumnInfo); LVCOLUMN ColumnInfo_1 = { 0 }; ColumnInfo_1.mask |= LVCF_TEXT | LVCF_WIDTH; ColumnInfo_1.cx = 100; ColumnInfo_1.pszText = (LPTSTR)_T("第1列"); ListView_InsertColumn(GetDlgItem(hwndDlg, IDC_LIST1), 1, &ColumnInfo_1); int iRetListCount = ListView_GetItemCount(GetDlgItem(hwndDlg, IDC_LIST1)); LVITEM ItemInfo = { 0 }; ItemInfo.mask |= LVIF_TEXT; ItemInfo.pszText = (LPTSTR)_T("AAA"); ItemInfo.iItem = iRetListCount; int iRetInsertItem = ListView_InsertItem(GetDlgItem(hwndDlg, IDC_LIST1), &ItemInfo); ListView_SetItemText(GetDlgItem(hwndDlg, IDC_LIST1), iRetInsertItem, 1, (LPTSTR)_T("AAAA")); int iRetListCount_1 = ListView_GetItemCount(GetDlgItem(hwndDlg, IDC_LIST1)); LVITEM ItemInfo_1 = { 0 }; ItemInfo_1.mask |= LVIF_TEXT; ItemInfo_1.pszText = (LPTSTR)_T("AAA"); ItemInfo_1.iItem = iRetListCount_1; int iRetInsertItem_1 = ListView_InsertItem(GetDlgItem(hwndDlg, IDC_LIST1), &ItemInfo_1); ListView_SetItemText(GetDlgItem(hwndDlg, IDC_LIST1), iRetInsertItem_1, 1, (LPTSTR)_T("AAAA")); int iRetListCount_2 = ListView_GetItemCount(GetDlgItem(hwndDlg, IDC_LIST1)); LVITEM ItemInfo_2 = { 0 }; ItemInfo_2.mask |= LVIF_TEXT; ItemInfo_2.pszText = (LPTSTR)_T("AAA"); ItemInfo_2.iItem = iRetListCount_2; int iRetInsertItem_2 = ListView_InsertItem(GetDlgItem(hwndDlg, IDC_LIST1), &ItemInfo_1); ListView_SetItemText(GetDlgItem(hwndDlg, IDC_LIST1), iRetInsertItem_2, 1, (LPTSTR)_T("AAAA")); } break; case WM_NOTIFY: { switch (LOWORD(wParam)) { case IDC_LIST1: { if (((LPNMHDR)lParam)->code == NM_CLICK) { int iItem = ((LPNMITEMACTIVATE)lParam)->iItem; int iSubItem = ((LPNMITEMACTIVATE)lParam)->iSubItem; TCHAR tempText[256] = { 0 }; if (iItem >= 0 && iSubItem >= 0) { _stprintf_s(tempText, _T("第%d列,第%d行"), iSubItem, iItem); MessageBox(hwndDlg, tempText, _T(""), NULL); return TRUE; } } } break; default: break; } } break; case WM_COMMAND: { UINT ControlID = LOWORD(wParam); UINT ControlCode = HIWORD(wParam); if (ControlCode == BN_CLICKED) { { HWND hwndHeader = ListView_GetHeader(GetDlgItem(hwndDlg, IDC_LIST1)); int ColumnCount = Header_GetItemCount(hwndHeader); int ItemCount = ListView_GetItemCount(GetDlgItem(hwndDlg, IDC_LIST1)); TCHAR MaxItem[125] = { 0 }; _stprintf_s(MaxItem, _T("共%d行,共%d列"), ItemCount, ColumnCount); MessageBox(hwndDlg, MaxItem, _T(""), NULL); //实现点击任意按钮弹出提示框,显示当前 ListCtrl 控件中有几行几列的数据! } if (ControlID == IDCANCEL) { int iRet = MessageBox(hwndDlg, _T("AAA"), _T(""), MB_OKCANCEL); if (iRet == IDOK) { EndDialog(hwndDlg, 888); } } if (ControlID == IDC_BUTTON1) { int iRetListCount = ListView_GetItemCount(GetDlgItem(hwndDlg, IDC_LIST1)); LVITEM ItemInfo = { 0 }; ItemInfo.mask |= LVIF_TEXT; ItemInfo.pszText = (LPTSTR)_T("AAA"); ItemInfo.iItem = iRetListCount; int iRetInsertItem = ListView_InsertItem(GetDlgItem(hwndDlg, IDC_LIST1), &ItemInfo); ListView_SetItemText(GetDlgItem(hwndDlg, IDC_LIST1), iRetInsertItem,1,(LPTSTR)_T("AAAA")); } return TRUE; } } break; default: break; } return FALSE; } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, INT nCmdShow) { int iRet = DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, MyDialogProc); return 0; }
浙公网安备 33010602011771号