winapi — C ++ Win32 Пытается создать нарисованную владельцем кнопку переключения

Я очень долго (ну, несколько дней) пытался создать кнопку переключения. Кнопка с состоянием вверх или вниз.

Потребовался день, чтобы понять, что невозможно создать нарисованную владельцем кнопку переключения, флажок и 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 имеет значение true, только когда он рисует IDC_BTN_TOGGLE, а верхнее значение bool также имеет значение true.

Обычные кнопки работают нормально, когда я нажимаю на них, они мгновенно показывают состояние выключения, отпускают, возвращают в нормальное состояние, кнопка переключения едва реагирует.

введите описание изображения здесь

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]