Header_SetOrderArray 函数用于设置报头控件(Header Control)中的项的显示顺序。这个函数在 Commctrl.h 头文件中声明。

以下是 Header_SetOrderArray 函数的基本信息:
BOOL Header_SetOrderArray(
  HWND hwnd,
  int  iCount,
  LPINT lpi
);

参数说明:
  •  hwnd:报头控件的句柄。

  •  iCount:指定数组中的项数。

  •  lpi:指向一个整数数组的指针,其中包含报头控件项的索引。这些索引表示项的新显示顺序。


该函数返回一个 BOOL 类型的值,如果成功,返回值为非零;如果失败,返回值为零。

请注意,该函数用于设置报头控件中项的显示顺序,可以通过调用 Header_GetOrderArray 函数来获取当前的项顺序。

这个函数的使用通常涉及到获取当前的项顺序,修改它,然后通过调用 Header_SetOrderArray 函数来设置新的顺序。

以下是一个简单的示例代码,演示如何使用 Header_SetOrderArray 函数:
#include <windows.h>
#include <commctrl.h>

int main() {
    // 初始化 Common Controls
    INITCOMMONCONTROLSEX icex;
    icex.dwSize = sizeof(INITCOMMONCONTROLSEX);
    icex.dwICC = ICC_WIN95_CLASSES; // 或其他需要的标志
    InitCommonControlsEx(&icex);

    // 创建窗口
    HWND hwnd = CreateWindowEx(0, WC_HEADER, L"Header Control",
        WS_OVERLAPPEDWINDOW | WS_VISIBLE,
        100, 100, 400, 200,
        NULL, NULL, NULL, NULL);

    if (hwnd == NULL) {
        MessageBox(NULL, L"Window creation failed!", L"Error", MB_ICONERROR);
        return 1;
    }

    // 获取当前的项顺序
    int itemCount = Header_GetItemCount(hwnd);
    int* orderArray = new int[itemCount];
    Header_GetOrderArray(hwnd, itemCount, orderArray);

    // 修改项顺序,这里仅做简单的逆序处理
    for (int i = 0; i < itemCount / 2; ++i) {
        int temp = orderArray[i];
        orderArray[i] = orderArray[itemCount - 1 - i];
        orderArray[itemCount - 1 - i] = temp;
    }

    // 设置新的项顺序
    Header_SetOrderArray(hwnd, itemCount, orderArray);

    // 释放内存
    delete[] orderArray;

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

    return 0;
}

在这个例子中,通过 Header_GetOrderArray 函数获取当前的项顺序,然后进行简单的逆序处理,并通过 Header_SetOrderArray 函数设置新的项顺序。这只是一个演示,实际应用中可能需要根据具体需求来确定新的项顺序。


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