2013-04-29 4 views
4

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

Мне уже удалось заставить его выглядеть и вести себя аналогично другим, но есть одна вещь, которую я не могу понять. Площадь звено плавающем окон имеет более темный голубовато фон и есть тонкое различие во взгляде между Windows 7 и Windows 8. Изображение этого в Windows 7 можно увидеть здесь

http://msdn.microsoft.com/en-us/library/windows/desktop/aa511448.aspx#flyouts

Я достиг это путем рисования этой области ссылки моего окна вылета вручную в правильных цветах (включая градиент в верхней части раздела) с помощью сообщения WM_PAINT, но я просто чувствую, что это слишком много взлома, особенно потому, что на него не влияет изменение тем в Windows. Например, если я задаю тему «Windows Classic», эта область должна быть серой, а не синей.

Итак, мой вопрос: я что-то упускаю в том, как это можно достичь, не нарисовав окно вручную. Я заметил, что панель сведений в окнах Explorer в Win 7 имеет тот же вид. Я немного искал ответы, но ничего не нашел. Это мой первый раз, когда я запускаю GUI с помощью WinAPI, поэтому у меня очень мало опыта, и поэтому я предполагаю, что есть что-то, о чем я просто не знаю.

UPDATE:

мне удалось выяснить, как сделать эту область без покраски вручную. Это можно сделать с помощью OpenThemeData и DrawThemeBackground функции в

HTHEME aeroTheme = OpenThemeData (HWND, L "выпадающий");
DrawThemeНа складе (aeroTheme, hdc, FLYOUT_LINKAREA, 0, & rect, & rect);

Это, очевидно, работает только в тех случаях, когда темы включены, поэтому для не тематических случаев я рисую нормальный прямоугольник с соответствующим цветом.

ответ

0

Я не эксперт в WinAPI, поэтому я не могу предложить никаких рекомендаций по достижению нужного вам вида без ручной росписи.

Однако, если вы успешно достигли внешнего вида для определенной цветовой темы, я бы предложил вам посмотреть на GetSysColor function и использовать это при создании ваших кистей для рисования. Это должно позволить вам получить правильные цвета на основе темы, которая была установлена. Более подробную информацию (включая таблицу образцов) можно найти here.

Надеюсь, это поможет.

+0

Спасибо, я посмотрю. – AFA

Смежные вопросы