模态对话框的消息响应

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;
}

 

posted on 2021-01-30 20:36  SakuraQAQ  阅读(122)  评论(0)    收藏  举报

导航