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

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

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

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

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

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

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

Google Chrome не использует Vista SDK для достижения этой цели на XP. Если вы заглядываете в src\chrome\browser\views\frame есть несколько файлов для определения frameworks браузера в зависимости от возможностей системы. В 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 для рисования кнопок frameworks.

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

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

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

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

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

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

Google Chrome использует Windows Vista SDK для просмотра стекла на XP. Вы можете скачать это здесь:

http://www.microsoft.com/downloads/details.aspx?FamilyID=4377f86d-c913-4b5c-b87e-ef72e5b4e065&displaylang=en

Используя это, вам нужно включить задержку загрузки следующих DLL, чтобы получить эффект Glass в XP:

  • uxtheme.dll
  • dwmapi.dl

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

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

  • Как определить несколько действий JButton из другого classа
  • Эффект JavaFX на фоне
  • Как создать RecyclerView с несколькими типами просмотра?
  • Как настроить ListField в BlackBerry?
  • Редактор графического редактора Netbeans, создающий собственный непонятный код
  • Как работает stream отправки событий?
  • paintComponent () vs paint () и JPanel vs Canvas в графическом интерфейсе типа кисти
  • Почему мы должны использовать sp для размеров шрифтов в Android?
  • Переместить макеты, когда отображается мягкая клавиатура?
  • Как получить центр большого пальца изображения UISlider
  • Как обновить текстовое поле в графическом интерфейсе из другого streamа
  • Давайте будем гением компьютера.