MonthCal_SetSelRange 是 Win32 API 中的一个函数,用于设置月历控件(Month Calendar control)的选定日期范围。这个函数在 Commctrl.h 头文件中声明。

以下是 MonthCal_SetSelRange 函数的一般格式:
BOOL MonthCal_SetSelRange(HWND hwnd, const SYSTEMTIME *pMinRange, const SYSTEMTIME *pMaxRange);

参数说明:
  •  hwnd:月历控件的句柄。

  •  pMinRange:指向 SYSTEMTIME 结构的指针,表示选定日期的最小范围。

  •  pMaxRange:指向 SYSTEMTIME 结构的指针,表示选定日期的最大范围。


函数返回值:
  •  如果函数调用成功,返回值为 TRUE。

  •  如果函数调用失败,返回值为 FALSE。要获取更多错误信息,可以调用 GetLastError 函数。


使用示例:
#include <windows.h>
#include <commctrl.h>

int main() {
    // 初始化公共控件
    INITCOMMONCONTROLSEX icex;
    icex.dwSize = sizeof(INITCOMMONCONTROLSEX);
    icex.dwICC = ICC_DATE_CLASSES; // 启用日期控件相关的类
    InitCommonControlsEx(&icex);

    // 创建主窗口
    HWND hwnd = CreateWindowEx(0, "SysMonthCal32", NULL, WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, CW_USEDEFAULT, 300, 200, NULL, NULL, GetModuleHandle(NULL), NULL);

    if (hwnd == NULL) {
        MessageBox(NULL, "窗口创建失败!", "错误", MB_ICONERROR);
        return 1;
    }

    // 设置月历控件的选定日期范围
    SYSTEMTIME minRange, maxRange;
    minRange.wYear = 2022;
    minRange.wMonth = 1;
    minRange.wDay = 1;

    maxRange.wYear = 2022;
    maxRange.wMonth = 1;
    maxRange.wDay = 15;

    MonthCal_SetSelRange(hwnd, &minRange, &maxRange);

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

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

    return 0;
}

这个示例代码创建了一个窗口,其中包含一个月历控件,并设置了该月历控件的选定日期范围为从 2022 年 1 月 1 日到 2022 年 1 月 15 日。要使用 SysMonthCal32 类,需要先调用 InitCommonControlsEx 函数启用相关的控件类。


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