Я сделал окно всплывания в области уведомлений с помощью 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);
Это, очевидно, работает только в тех случаях, когда темы включены, поэтому для не тематических случаев я рисую нормальный прямоугольник с соответствующим цветом.
Спасибо, я посмотрю. – AFA