在 Win32 API 的 Commctrl.h 头文件中,确实有一个名为 ListView_DeleteAllItems 的函数,该函数用于删除列表视图控件中的所有项。
BOOL ListView_DeleteAllItems(
  HWND hwnd
);

参数说明:
  •  hwnd:指向列表视图控件的句柄。


函数返回值:
  •  如果成功,返回 TRUE;如果失败,返回 FALSE。


这个函数通常用于清空列表视图中的所有项,可以在需要重新加载或更新数据时使用。

以下是一个简单的示例:
#include <Commctrl.h>

LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
    switch (uMsg) {
        case WM_CREATE:
        {
            // 创建列表视图控件
            HWND hListView = CreateWindowEx(0, WC_LISTVIEW, L"",
                                            WS_VISIBLE | WS_CHILD | LVS_REPORT,
                                            10, 10, 300, 200, hwnd, NULL, GetModuleHandle(NULL), NULL);

            if (hListView) {
                // 向列表视图添加列...
                LVCOLUMN lvc;
                lvc.mask = LVCF_TEXT | LVCF_WIDTH;
                lvc.cx = 100;
                lvc.pszText = L"Column 1";
                ListView_InsertColumn(hListView, 0, &lvc);

                // 向列表视图添加一些项...
                LVITEM lvi;
                lvi.mask = LVIF_TEXT;
                lvi.pszText = L"Item 1";
                ListView_InsertItem(hListView, &lvi);

                lvi.pszText = L"Item 2";
                ListView_InsertItem(hListView, &lvi);

                // 在某个时刻删除所有项...
                ListView_DeleteAllItems(hListView);
            }
            break;
        }
        case WM_DESTROY:
            PostQuitMessage(0);
            break;
        default:
            return DefWindowProc(hwnd, uMsg, wParam, lParam);
    }

    return 0;
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
    // 初始化通用控件库
    INITCOMMONCONTROLSEX icex;
    icex.dwSize = sizeof(INITCOMMONCONTROLSEX);
    icex.dwICC = ICC_LISTVIEW_CLASSES; // 或其他适当的标志
    if (!InitCommonControlsEx(&icex)) {
        // 初始化失败处理
        return 1;
    }

    // 注册窗口类
    WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, WindowProc, 0L, 0L,
                      GetModuleHandle(NULL), NULL, NULL, NULL, NULL,
                      L"ListView_DeleteAllItems Example", NULL };
    RegisterClassEx(&wc);

    // 创建主窗口
    HWND hwnd = CreateWindow(wc.lpszClassName, L"ListView_DeleteAllItems Example",
                             WS_OVERLAPPEDWINDOW, 100, 100, 400, 300,
                             NULL, NULL, wc.hInstance, NULL);

    // 显示主窗口
    ShowWindow(hwnd, SW_SHOWNORMAL);
    UpdateWindow(hwnd);

    // 消息循环
    MSG msg;
    while (GetMessage(&msg, NULL, 0, 0)) {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

    // 注销窗口类
    UnregisterClass(wc.lpszClassName, wc.hInstance);

    return 0;
}

在这个例子中,当窗口创建时,WM_CREATE 消息中的 ListView_DeleteAllItems 被调用,删除了列表视图中的所有项。


转载请注明出处:http://www.zyzy.cn/article/detail/24705/Win32 API/Commctrl.h/ListView_DeleteAllItems