C ++ Win32尝试创建一个所有者绘制的切换按钮

时间:2013-09-11 18:54:46

标签: c++ winapi owner

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

花了一天时间才意识到无法创建所有者绘制的切换按钮,复选框和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。

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

enter image description here

0 个答案:

没有答案