Win32窗口高级列表控件的使用②

1、一键清空列表框中的所有数据;
2、点击按钮选中列表框中的第2行;
3、遍历列表框;

#include <Windows.h>
#include <tchar.h>
#include <CommCtrl.h>
TCHAR szWindowClass[] = _T("WindowClass");
TCHAR szTitle[] = _T("Title");
HWND hButtonControl_1 = nullptr; UINT IDC_BUTTON_1 = 200;
HWND hButtonControl_2 = nullptr; UINT IDC_BUTTON_2 = 201;
HWND hButtonControl_3 = nullptr; UINT IDC_BUTTON_3 = 202;
HWND hListViewControl_1 = nullptr; UINT IDC_LISTVIEW_1 = 300;

LRESULT CALLBACK WindowProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)    
{
    switch (uMsg)
    {
    case WM_CREATE:
    {
        hButtonControl_1 = CreateWindow(WC_BUTTON, _T("一键清空列表框中的所有数据"),WS_CHILD |WS_VISIBLE | WS_BORDER | BS_PUSHBUTTON, CW_USEDEFAULT, CW_USEDEFAULT,
            220, 25, hWnd, (HMENU)IDC_BUTTON_1, NULL, NULL);
        hButtonControl_2 = CreateWindow(WC_BUTTON, _T("点击按钮选中列表框中的第2行"), WS_CHILD | WS_VISIBLE | WS_BORDER | BS_PUSHBUTTON, 220, 0,
            220, 25, hWnd, (HMENU)IDC_BUTTON_2, NULL, NULL);
        hButtonControl_3 = CreateWindow(WC_BUTTON, _T("遍历列表框"), WS_CHILD | WS_VISIBLE | WS_BORDER | BS_PUSHBUTTON, 440, 0,
            220, 25, hWnd, (HMENU)IDC_BUTTON_3, NULL, NULL);
        hListViewControl_1 = CreateWindow(WC_LISTVIEW, _T(""), WS_CHILD | WS_VISIBLE | WS_BORDER |LVS_REPORT, 0, 25,
            220, 400, hWnd, (HMENU)IDC_LISTVIEW_1, NULL, NULL);
        LVCOLUMN ColumnInfo_1 = { 0 };
        ColumnInfo_1.mask |= LVCF_TEXT | LVCF_WIDTH;
        ColumnInfo_1.cx = 55;
        ColumnInfo_1.pszText = (LPTSTR)_T("第0列");
        ListView_InsertColumn(hListViewControl_1,0, &ColumnInfo_1);
        ColumnInfo_1 = { 0 };
        ColumnInfo_1.mask |= LVCF_TEXT | LVCF_WIDTH;
        ColumnInfo_1.cx = 55;
        ColumnInfo_1.pszText = (LPTSTR)_T("第1列");
        ListView_InsertColumn(hListViewControl_1, 1, &ColumnInfo_1);
        ColumnInfo_1 = { 0 };
        ColumnInfo_1.mask |= LVCF_TEXT | LVCF_WIDTH;
        ColumnInfo_1.cx = 55;
        ColumnInfo_1.pszText = (LPTSTR)_T("第2列");
        ListView_InsertColumn(hListViewControl_1, 2, &ColumnInfo_1);
        ColumnInfo_1 = { 0 };
        ColumnInfo_1.mask |= LVCF_TEXT | LVCF_WIDTH;
        ColumnInfo_1.cx = 55;
        ColumnInfo_1.pszText = (LPTSTR)_T("第3列");
        ListView_InsertColumn(hListViewControl_1, 3, &ColumnInfo_1);

        LVITEM RowInfo_1 = { 0 };
        RowInfo_1.mask |= LVIF_TEXT;
        RowInfo_1.pszText = (LPTSTR)_T("AAA");
        RowInfo_1.iItem = 0;
        ListView_InsertItem(hListViewControl_1, &RowInfo_1);
        RowInfo_1 = { 0 };
        RowInfo_1.mask |= LVIF_TEXT;
        RowInfo_1.pszText = (LPTSTR)_T("AAA");
        RowInfo_1.iItem = 1;
        ListView_InsertItem(hListViewControl_1, &RowInfo_1);
        RowInfo_1 = { 0 };
        RowInfo_1.mask |= LVIF_TEXT;
        RowInfo_1.pszText = (LPTSTR)_T("AAA");
        RowInfo_1.iItem = 2;
        ListView_InsertItem(hListViewControl_1, &RowInfo_1);
    }
        break;
    case WM_COMMAND:
    {
        UINT nControlID = LOWORD(wParam);
        UINT nNotificationCode = HIWORD(wParam);
        if (nNotificationCode == BN_CLICKED)
        {
            if (nControlID == IDC_BUTTON_1)
            {
                ListView_DeleteAllItems(hListViewControl_1);    //一键清空列表框中的所有数据;
            }
            if (nControlID == IDC_BUTTON_2)
            {
                ListView_SetItemState(hListViewControl_1, 1, LVIS_SELECTED, LVIS_SELECTED);    //点击按钮选中列表框中的第2行
            }
            if (nControlID == IDC_BUTTON_3)
            {
                for (int iItemIdx = ListView_GetNextItem(hListViewControl_1, -1, LVNI_ALL);
                    iItemIdx >= 0; 
                    iItemIdx = ListView_GetNextItem(hListViewControl_1, iItemIdx, LVNI_ALL))
                {
                    TCHAR szText[128] = {0};
                    ListView_GetItemText(hListViewControl_1, iItemIdx, 0, szText, 128);
                    MessageBox(hWnd, szText, _T(""), NULL);
                }
            }
        }
    }
        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;
    HWND hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT,
        800, 600, NULL, NULL, hInstance, 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;
}

 

上一篇:python解决matplotloib找不到ft2font文件问题


下一篇:visual studio 2017 新建c++项目没有win32控制台程序