我已经尝试了很长时间(好几天)来创建一个切换按钮。具有向上或向下状态的按钮。
花了一天时间才意识到无法创建所有者绘制的切换按钮,复选框和pushlike不起作用。当使用所有者绘制时,复选框或常规按钮之间没有区别(MSDN还指出您无法使用所有这些样式绘制的所有者。)
从阅读中我发现你必须自己做,通常不是一个问题,但我不能得到任何真正的“反应”。也就是说,如果我快速点击,没有任何反应,有时我会点击它会改变状态,其他时候不会,只有当我点击不同的按钮时才会更新。
如果按钮应该以向上或向下状态显示,我创建了一个全局变量。在命令中我设置了当按钮IDC_BTN_TOGGLE时,它将在bool上设置相反的值。
然后绘制项目部分:
// 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并且top bool为true时才为true。
正常按钮功能正常,当我点击它们时,它立即显示向下状态,释放,恢复正常,切换按钮几乎没有响应。