作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想更改日期时间选择器控件的日历的背景颜色。根据 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
。
每次打开下拉菜单时都会创建月历控件。为了调整它的大小,日期时间选择器控件的父窗口必须处理 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/
我想更改日期时间选择器控件的日历的背景颜色。根据 Windows SDK,有一个 marco DateTime_SetMonthCalColor。 DateTime_SetMonthCalColor(
我是一名优秀的程序员,十分优秀!