Подтвердить что ты не робот

Пользовательские заголовки/хром в приложении WinForms

Я почти уверен, что знаю ответ на этот вопрос, но я надеюсь на то, что я упустил.

Некоторые приложения, похоже, выглядят и чувствуют Vista Aero в своих заголовках и кнопках даже при работе в Windows XP. (Google Chrome и Windows Live Photo Gallery приходят на ум в качестве примеров.) Я знаю, что одним из способов добиться этого из WinForms было бы создать безграничную форму и нарисовать панель заголовков/кнопок самостоятельно, а затем переопределить WndProc, чтобы убедиться, что перемещение, изменение размера и нажатие кнопок делают то, что они должны делать (я не совсем понимаю специфику, но, возможно, вытащил ее, учитывая день, чтобы прочитать документацию.) Мне любопытно, есть ли другой, более простой способ, которым я 'м с видом. Возможно, некоторые вызовы API или стили окон, которые я забыл?

Я верю, что Google ответил на него для меня, используя подход Roll-your-own-window с Chrome. Я оставлю вопрос открытым еще на один день, если у кого-то есть новая информация, но я считаю, что сам ответил на этот вопрос.

4b9b3361

Ответ 1

Вот статья с полным примером кода о том, как использовать свой собственный "хром" для приложения:

http://geekswithblogs.net/kobush/articles/CustomBorderForms3.aspx

Это похоже на действительно хороший материал. В ней есть всего 3 статьи, и она отлично работает, и на Vista тоже!

Ответ 2

Google Chrome не использует Vista SDK для достижения этой цели на XP. Если вы заглядываете в src\chrome\browser\views\frame, для определения рамки браузера в зависимости от возможностей системы существует несколько файлов. В XP это выглядит как OpaqueFrame; строка 19 имеет это, чтобы сказать:

// OpaqueFrame
//
//  OpaqueFrame is a CustomFrameWindow subclass that in conjunction with
//  OpaqueNonClientView provides the window frame on Windows XP and on Windows
//  Vista when DWM desktop compositing is disabled. The window title and
//  borders are provided with bitmaps.

Похоже, что он использует ресурсы в src\chrome\app\theme для рисования кнопок фрейма.

Итак, похоже, что мои надежды на то, что есть какой-то дешевый способ включить Vista в XP, разбиты. Единственный способ сделать это - вручную рисовать неклиентскую область вашего окна. Я считаю, что что-то вроде этого, вероятно, является правильным путем, поскольку он позволяет Windows обрабатывать неклиентские вещи, такие как перемещение и изменение размера окна.

Если кто-то не найдет способ волшебного включения тематики Vista в XP, это ответ на вопрос, но я, очевидно, не могу пометить свой собственный пост в качестве ответа.

Ответ 3

Оуэн, я использую Chrome на XP, и я не вижу тему стекла Vista Aero в окне Chrome. Я вижу его сплошным синим.

Если он настраивает те элементы управления и заголовки окон, которые вы хотите, это может быть выполнено. Там отличный, бесплатный инструментарий UI для WinForms, который делает именно это: KryptonToolkit

Ответ 4

@Jonathan Holland: Это что-то, что можно сделать с .NET?

Да, используя DllImport. Здесь - хорошее сообщение в блоге

Ответ 6

Нет, боюсь, нет другого простого способа сделать это.

Вы на правильном пути. Вам нужно будет создать пользовательскую Winform, а затем продолжить, как показано в этом .