Неклиентская роспись на стеклопакете - PullRequest
38 голосов
/ 12 апреля 2011

Теперь я настраиваю заголовок моего приложения.Моя цель - добавить еще одну кнопку в строке заголовка.Я мой предыдущий вопрос люди посоветовали мне, как я могу настроить не клиентскую область.Это прекрасно работает, за исключением одной маленькой вещи - светящиеся !Я могу рисовать светящиеся в неклиентской области, но я не могу сделать так, чтобы это распространялось из окна .Я также не могу найти какой-либо ресурс об этом Subj.

Я изучил этот образец и создал свое собственное тестовое приложение для исследования средств рисования, не относящихся к клиенту.Снимок экрана из окна моего приложения:

my app's window

Таким образом, вы можете видеть, что системная кнопка светится из окон, когда my обрезается рамкой.

Например, в окне Skype есть четыре пользовательских кнопки в строке заголовка, и они могут «светиться» за рамкой окна:

Skype's window

Может кто-нибудь посоветовать мнеузнать, как нарисовать светящиеся кнопки из окна?
Заранее спасибо!

[РЕДАКТИРОВАТЬ]
Спасибо всем за ответы!

Ответы [ 3 ]

11 голосов
/ 21 апреля 2011

Skype обманывает его, и в верхней части окна есть небольшая полоска;где их можно нарисовать.

Вы можете увидеть это в Process Explorer для SpyXX:

enter image description here

См. также

MSDN: Пользовательская оконная рама с использованием DWM

5 голосов
/ 14 апреля 2011

Я не думаю, что можно рисовать за пределами вашей области ЧПУ, и я сомневаюсь, что они рисуют весь пользовательский интерфейс, чтобы точно соответствовать эффектам DWM Aero.

Учитывая то, как это выглядит, мне интересно, сделали ли они какие-нибудь трюки с помощью кнопки помощи или восстановления CustomBorderForm, которая затем получала бы эффект подсветки размытия DWM "бесплатно".

Вот самая релевантная статья, которую я мог найти к этому: http://geekswithblogs.net/kobush/articles/CustomBorderForms3.aspx

Продолжение - я думаю, что эта пользовательская тема Chrome имеет больше указателей на одни и те же методы (хотя и с другой целью): Пользовательские заголовки / хром в приложении WinForms

3 голосов
/ 21 апреля 2011

AFAIK, это невозможно , потому что область за границей вашего окна просто не принадлежит вам .

Скриншот Skype взят изнарисованная рамка, которая, скорее всего, немного выходит за видимые границы, не от рамки Aero Glass .Вы можете заметить разницу, если внимательно посмотрите.

...