我设置了ownerdraw按钮。 我使用Rectangle并使用消息WM_DRAWITEM使其成功。 并在该按钮中成功判断ON / OFF。 但我想将悬浮效果添加为css的:hover。 我想花几秒钟将颜色变深。 很难。 我搜寻了几天,但找不到解决方案。 这是我的第一个问题。 对不起,英语不好。
我试图抓住鼠标(x,y)。 但是我不能。
case WM_MOUSEMOVE:
x = LOWORD(lp);
y = HIWORD(lp);
if(buttonlefttop<= x <= buttonlefttop + buttonwidth && buttontoptop<= y
<= buttontoptop + buttonheight){
std::cout<<"[INFO] "<<"ON\n";
}else{
std::cout<<"[INFO] "<<"OFF\n";
}
案例WM_DRAWITEM: hdc =(((LPDRAWITEMSTRUCT)(lp))-> hDC;
if (((LPDRAWITEMSTRUCT)(lp))->itemState & ODS_SELECTED) {
hpen = CreatePen(PS_SOLID, 5, RGB(80, 91, 109));
hbr = CreateSolidBrush(RGB(80, 91, 109));
SelectObject(hdc, hpen);
SelectObject(hdc, hbr);
std::cout<<"[INFO] ON\n";
}else {
hpen = CreatePen(PS_SOLID, 5, RGB(73, 147, 120));
hbr = CreateSolidBrush(RGB(73, 147, 120));
SelectObject(hdc, hpen);
SelectObject(hdc, hbr);
std::cout<<"[INFO] OFF\n";
}
Rectangle(hdc , 0 , 0 ,
buttonwidth,buttonheight
);
DeleteObject(SelectObject(hdc , GetStockObject(WHITE_BRUSH)));
return TRUE;
我无法添加hovereffect。
答案 0 :(得分:2)
您可以使用Buffered Animation API,此功能自Windows Vista开始可用。这是标准Win32控件在内部用来绘制动画淡入淡出效果的API。
API负责:
WM_PAINT
基本上,您只需要渲染动画的第一张和最后一张图像,API就会自动渲染中间的步骤。
网络上有许多使用此API的示例。我上面链接的API页面上已经有一个。有一个tutorial on CodeGuru,它有更好的解释。