1

我已经尝试了很长时间(好几天)来创建一个切换按钮。具有向上或向下状态的按钮。

花了一天时间才意识到无法创建所有者绘制的切换按钮,复选框和 pushlike 不起作用。使用所有者绘制时,复选框或常规按钮之间没有区别(MSDN 还指出,您不能将所有者绘制与任何这些样式一起使用。)

从阅读中我发现你必须自己做,通常根本不是问题,但我无法获得任何真正的“响应能力”。也就是说,如果我快速点击,什么也不会发生,有时我会点击它并改变状态,其他时候不会,只有当我点击不同的按钮时才会更新。

我创建了一个全局变量,用于判断按钮是否应显示为向上或向下状态。在我设置的命令中,当按钮 IDC_BTN_TOGGLE 时,它将在布尔值上设置相反的值。

然后是draw item部分:

// button down
if ((pDIS->itemState & ODS_SELECTED) || showButtonDown) { 
    oldBrush = (HBRUSH)SelectObject(pDIS->hDC, theme.hBrush[BRUSH_BUTTON2]);
}
// button up
else {
    oldBrush = (HBRUSH)SelectObject(pDIS->hDC, theme.hBrush[BRUSH_BUTTON]);
}

我所有的按钮都是所有者绘制的并贯穿其中。showButtonDown 仅在绘制 IDC_BTN_TOGGLE 时为真,并且顶部布尔值也为真。

普通按钮功能正常,当我点击它们时,它立即显示向下状态,松开,恢复正常,切换按钮几乎没有响应。

在此处输入图像描述

4

0 回答 0