控件–SysHeader32-WindowsAPI论坛-WindowsAPI-津桥芝士平台

控件–SysHeader32

使用WindowsAPI,创建SysHeader32控件:

#include <windows.h>
#include <commctrl.h>
#pragma comment(lib, "comctl32.lib")
#define ID_HEADER 101
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) 
{
    switch (uMsg) {
    case WM_CREATE: {
        // 创建列表视图控件
        HWND hListView = CreateWindowEx(0, WC_LISTVIEW, NULL,
            WS_VISIBLE | WS_CHILD | LVS_REPORT | LVS_EDITLABELS,
            10, 10, 300, 200, hwnd, NULL, nullptr, NULL);
        HWND hHeader = CreateWindowEx(0, L"SysHeader32", L"myheader", WS_VISIBLE | WS_OVERLAPPED |
            WS_CHILD | WS_VISIBLE, 0, 215, 700, 20, hListView, NULL, NULL, NULL);
        // 初始化头部控件
        //HWND hHeader = (HWND)SendMessage(hListView, LVM_GETHEADER, 0, 0);
        // 添加列
        LVCOLUMN lvc;
        lvc.mask = LVCF_TEXT | LVCF_WIDTH | LVCF_SUBITEM;
        lvc.pszText = const_cast<wchar_t*>(L"Column 1");
        lvc.cx = 100;
        SendMessage(hListView, LVM_INSERTCOLUMN, 0, (LPARAM)&lvc);
        lvc.pszText = const_cast<wchar_t*>(L"Column 2");
        lvc.cx = 100;
        SendMessage(hListView, LVM_INSERTCOLUMN, 1, (LPARAM)&lvc);
        lvc.pszText = const_cast<wchar_t*>(L"Column 3");
        lvc.cx = 100;
        SendMessage(hListView, LVM_INSERTCOLUMN, 2, (LPARAM)&lvc);

        // 添加行
        LVITEM lvi;
        lvi.mask = LVIF_TEXT;
        lvi.iItem = 0;
        lvi.iSubItem = 0;
        lvi.pszText = const_cast<wchar_t*>(L"Item 1");
        SendMessage(hListView, LVM_INSERTITEM, 0, (LPARAM)&lvi);
        lvi.iSubItem = 1;
        lvi.pszText = const_cast<wchar_t*>(L"Subitem 1");
        SendMessage(hListView, LVM_SETITEM, 0, (LPARAM)&lvi);
        lvi.iItem = 1;
        lvi.iSubItem = 0;
        lvi.pszText = const_cast<wchar_t*>(L"Item 2");
        SendMessage(hListView, LVM_INSERTITEM, 0, (LPARAM)&lvi);
        lvi.iSubItem = 1;
        lvi.pszText = const_cast<wchar_t*>(L"Subitem 2");
        SendMessage(hListView, LVM_SETITEM, 1, (LPARAM)&lvi);
        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)
{
    // 初始化Common Controls
    INITCOMMONCONTROLSEX icex;
    icex.dwSize = sizeof(icex);
    icex.dwICC = ICC_LISTVIEW_CLASSES;
    InitCommonControlsEx(&icex);

    // 创建窗口类
    WNDCLASS wc = {};
    wc.lpfnWndProc = WindowProc;
    wc.hInstance = hInstance;
    wc.lpszClassName = L"HeaderControlExample";
    RegisterClass(&wc);

    // 创建窗口
    HWND hwnd = CreateWindowEx(0, L"HeaderControlExample", L"SysHeader32 Example",
        WS_OVERLAPPEDWINDOW | WS_VISIBLE,
        CW_USEDEFAULT, CW_USEDEFAULT, 450, 250,
        NULL, NULL, hInstance, NULL);

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

    return 0;
}

效果图:

image

 

 

请登录后发表评论

    没有回复内容