gpt4 book ai didi

winapi - Win32 DateTime_SetMonthCalColor 似乎不起作用

转载 作者:行者123 更新时间:2023-12-04 03:39:32 27 4
gpt4 key购买 nike

我想更改日期时间选择器控件的日历的背景颜色。根据 Windows SDK,有一个 marco DateTime_SetMonthCalColor。

DateTime_SetMonthCalColor(hwnd,MSC_BACKGROUND,RGB(0,120,250));

但是不行。我在 windows control spy 上这样做,发送相同的消息 DTM_SETMCCOLOR ,也没有效果。那怎么了?

最佳答案

MCSC_BACKGROUND 设置 month calendar 的背景颜色控件本身,仅当下拉列表的大小调整为超过默认的单个月份时才显示。各个月份的背景设置为 MCSC_MONTHBK

enter image description here

每次打开下拉菜单时都会创建月历控件。为了调整它的大小,日期时间选择器控件的父窗口必须处理 DTN_DROPDOWN。通知,就像下面的最小示例。

HWND CreateDTC(HWND hWnd)
{
INITCOMMONCONTROLSEX icex = { sizeof(icex), ICC_DATE_CLASSES };
InitCommonControlsEx(&icex);

return CreateWindowExW(0, DATETIMEPICK_CLASS, L"DateTime",
WS_BORDER | WS_CHILD | WS_VISIBLE | DTS_SHOWNONE,
10, 10, 150, 25, hWnd, nullptr, hInst, nullptr);
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
static HWND hDTC = nullptr;

switch(msg)
{
case WM_CREATE:
hDTC = CreateDTC(hWnd);
DateTime_SetMonthCalColor(hDTC, MCSC_BACKGROUND, RGB(0, 120, 250)); // blue
DateTime_SetMonthCalColor(hDTC, MCSC_MONTHBK, RGB(120, 250, 0)); // green
break;

case WM_NOTIFY:
switch(((LPNMHDR)lParam)->code)
{
case DTN_DROPDOWN:
HWND hMC = DateTime_GetMonthCal(hDTC);
RECT rc;
MonthCal_GetMinReqRect(hMC, &rc);
MoveWindow(hMC, 0, 0, (5 * rc.right) / 2, (3 * rc.bottom) / 2, FALSE);
break;
}
break;
//...
}
return 0;
}

关于winapi - Win32 DateTime_SetMonthCalColor 似乎不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66310217/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com