我有一个自定义绘制按钮。我启用了视觉样式,然后,因为我不希望这个特定的按钮成为主题,我使用SetWindowTheme(hwndCustomDrawnButton, L" ", L" ");
在WM_CREATE
消息中创建它之后禁用它的主题。按钮绘图的代码是:
case WM_NOTIFY:
{
LPNMHDR item = (LPNMHDR)lParam;
if (item->idFrom == 13 && item->code == NM_CUSTOMDRAW)
{
LPNMCUSTOMDRAW item_draw = (LPNMCUSTOMDRAW)item;
if (item_draw->uItemState & CDIS_SELECTED)
{
SetDCBrushColor(item_draw->hdc, RGB(91, 173, 236));
SelectObject(item_draw->hdc, GetStockObject(DC_BRUSH));
SetDCPenColor(item_draw->hdc, RGB(91, 173, 236));
SelectObject(item_draw->hdc, GetStockObject(DC_PEN));
}
else
{
SetDCBrushColor(item_draw->hdc, RGB(0, 125, 195));
SelectObject(item_draw->hdc, GetStockObject(DC_BRUSH));
SetDCPenColor(item_draw->hdc, RGB(0, 125, 195));
SelectObject(item_draw->hdc, GetStockObject(DC_PEN));
}
// Here I draw rectangle and text...
return CDRF_SKIPDEFAULT;
}
}
break;
我在uItemState
为CDIS_HOT
时尝试处理该案例,但它不起作用(我想这是因为我禁用了此控件的主题)。 有没有办法在鼠标悬停时更改此按钮的外观?我的意思是如果我不禁用主题而获得的确切方案,我会在{{1}时继续处理此案例} uItemState
中的CDIS_HOT
。我试图查看网页,但我发现WM_NOTIFY
功能对我来说很难理解。如果这是解决我的问题的有效方法,那么任何人都可以向我提供代码示例或教程,其中有很好的解释这个功能吗?
我在Windows 8.1上使用Visual C ++(没有mfc或其他任何东西)。我的应用程序将在Windows 7上提供。 谢谢!