gpt4 book ai didi

c++ - 在 Win32 C++ 中禁用单个应用程序的按钮动画

转载 作者:行者123 更新时间:2023-11-28 05:52:56 28 4
gpt4 key购买 nike

通过这个电话

SystemParametersInfo(SPI_SETCLIENTAREAANIMATION, 0, (LPVOID)FALSE, 0);

我禁用了我的 Win32 C++ 项目(没有 MFC 或其他任何东西)中的按钮动画,该项目启用了 Visual Styles Common Controls 6.0.0.0 并通过调用 InitCommonControlsEx 函数正确初始化。有没有其他方法可以做到这一点?我问是因为我不想为整个系统禁用动画,而只是为我的应用程序禁用动画。我创建的按钮是自定义绘制的(不是所有者绘制的)。我在 WM_CREATE 消息中创建了一个这样的按钮(hwndbutton 之前定义为静态的,以便我可以在所有 WM 消息之间共享它):

hwndbutton = CreateWindowEx(0, L"BUTTON", L"example", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, x, y, width, height, hwnd, (HMENU)button_id, GetModuleHandle(NULL), NULL);

然后我画了它

...
case WM_NOTIFY:
{
LPNMHDR item = (LPNMHDR)lParam;
if (item->idFrom == button_id && item->code == NM_CUSTOMDRAW)
{
LPNMCUSTOMDRAW item_draw = (LPNMCUSTOMDRAW)item;
if (item_draw->uItemState & CDIS_HOT)
{
SetDCBrushColor(item_draw->hdc, RGB(180, 180, 180));
SelectObject(item_draw->hdc, GetStockObject(DC_BRUSH));
}
else
{
SetDCBrushColor(item_draw->hdc, RGB(255, 255, 255));
SelectObject(item_draw->hdc, GetStockObject(DC_BRUSH));
}
SetDCPenColor(item_draw->hdc, RGB(0, 0, 0));
SelectObject(item_draw->hdc, GetStockObject(DC_PEN));
RoundRect(item_draw->hdc, item_draw->rc.left, item_draw->rc.top, item_draw->rc.right, item_draw->rc.bottom, 0, 0);
return CDRF_DODEFAULT; // Return would be CDRF_SKIPDEFAULT but I want to keep the text "example" drawn
}
break;
...

通过“按钮动画”,我的意思是例如当您将光标移到按钮上然后离开它时按钮颜色发生的褪色效果:我希望它在正常状态时为 colorA 或在鼠标时为 colorB正常时结束而不是 colorA,鼠标结束时结束 fade_until_you_reach_colorB。

谢谢

编辑:我添加了两个 gif第一个是我想要的(我通过之前调用 SystemParametersInfo 获得),第二个是我想避免的动画

What I want

What I DON'T want

最佳答案

个别窗口和控件的主题可以如下禁用:

SetWindowTheme(hbutton, L" ", L" ");

动画应该已经被禁用,因为您正在使用自定义绘制。此方法还将禁用鼠标悬停效果。

通常,当您禁用按钮的主题时,在较新的系统上,旧的 3-D 边框可能看起来很奇怪。您可以将 BS_FLAT 添加到按钮的样式。

关于c++ - 在 Win32 C++ 中禁用单个应用程序的按钮动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34845240/

28 4 0
文章推荐: javascript - 想在这里使用 Canvas 作为背景
文章推荐: javascript - 按下 ENTER 时提交某个按钮
文章推荐: javascript - 按下提交按钮后淡化
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com