MonthCal_HitTest 函数用于获取月历控件(Month Calendar Control)上指定点的相关信息。以下是该函数的声明:
int MonthCal_HitTest(HWND hMonthCal, PMCHITTESTINFO pinfo);

参数:
  •  hMonthCal:要查询的月历控件的句柄。

  •  pinfo:指向 MCHITTESTINFO 结构的指针,该结构包含了待查询的点的坐标及其他信息。

typedef struct tagMCHITTESTINFO {
  POINT       pt;
  UINT        uHit;
  SYSTEMTIME  st;
} MCHITTESTINFO, *PMCHITTESTINFO;

MCHITTESTINFO 结构包含以下字段:
  •  pt:指定要查询的点的坐标。

  •  uHit:返回值,指示命中的区域。可能的值包括:

  - MCHT_TITLE:标题区域
  - MCHT_CALENDAR:日期区域
  - MCHT_TODAYLINK:"今天" 链接区域
  - MCHT_NEXT:下一月按钮
  - MCHT_PREV:上一月按钮
  - MCHT_NOWHERE:没有命中任何区域
  •  st:返回值,如果 uHit 是 MCHT_CALENDAR,则包含了命中的日期。


返回值:
  •  如果函数成功,返回值为 uHit 字段的值。

  •  如果函数失败,返回值为 MCHT_NOWHERE。


使用示例:
#include <Commctrl.h>

// ...

HWND hMonthCal = CreateWindowEx(0, MONTHCAL_CLASS, NULL, 
    WS_BORDER | WS_CHILD | WS_VISIBLE,
    10, 10, 200, 200,
    hwndParent, (HMENU)ID_MONTHCAL, hInstance, NULL);

if (hMonthCal != NULL) {
    POINT hitPoint = {50, 50}; // 待查询的点的坐标
    MCHITTESTINFO hitTestInfo = {0};
    hitTestInfo.pt = hitPoint;

    // 查询指定点的信息
    int hitResult = MonthCal_HitTest(hMonthCal, &hitTestInfo);

    if (hitResult != MCHT_NOWHERE) {
        // 使用 hitTestInfo 进行进一步的操作
    } else {
        // 处理查询失败的情况
    }
}

请确保在使用此函数之前,你已经正确初始化了 Common Controls(通过调用 InitCommonControlsEx 函数)。


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