Черная полоса подсветки с GDI

У меня есть хороший код сплиттера для моего графического интерфейса, но я не могу получить перо/кисть/что бы это ни было, мне нужно правильно выделить. Вы знаете, как в Visual Studio 10 полосы разделения можно перетаскивать, и есть красивая черная прозрачная полоса, сообщающая, где произойдет разделение, когда вы поднимаете кнопку мыши. Вот картинка: http://www.freeimgshost.com/fullsize/efmcxyyu1wbyb1r7mz0.png

Как я могу добиться этой черной полосы выделения, используя только GDI и С++?


person Adam Dreaver    schedule 02.07.2012    source источник


Ответы (2)


Пользовательский интерфейс Visual Studio реализован в WPF, поэтому я предполагаю, что полоса разделения — это просто полупрозрачный заполненный прямоугольник.

Однако GDI имеет довольно плохую поддержку прозрачности.

Вы можете получить тот же эффект, используя полупрозрачное многослойное окно всегда поверх остальных. Это простое решение, потому что вам не нужно беспокоиться о том, чтобы что-то перекрашивать. Вы просто перемещаете окно.

В этом ответе на другой вопрос есть некоторый код, который создает такое окно (для другой цели).

person arx    schedule 02.07.2012

Вероятно, это одно из правильных применений LockWindowUpdate().

В Mousedown заблокируйте окно и начните рисовать полосу перетаскивания напрямую. Поскольку мышь все еще захвачена, полоса перетаскивания все еще будет получать уведомления мыши. При наведении мыши разблокируйте окно, измените размер и дайте рисованию продолжаться как обычно.

person Deanna    schedule 02.07.2012