Создание приложений в стиле Vista в C # - PullRequest
4 голосов
/ 17 февраля 2009

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

Ответы [ 4 ]

9 голосов
/ 17 февраля 2009

Если вы используете WinForms, то относительно легко сделать, потому что WinForms основан на собственных элементах управления Win32. Многие элементы управления имеют способы улучшить их рендеринг, устанавливая дополнительные флаги (отправляя сообщения в собственный элемент управления) или используя SetWindowTheme . Это может быть достигнуто через Interop.

В качестве примера возьмем простой ListView. Если вам нужен просмотр списка в стиле проводника, вы используете SetWindowTheme в открытом дескрипторе ListView. Мы используем взаимодействие, чтобы получить доступ к встроенной функции SetWindowTheme (), подключаем оконную процедуру ListView и применяем тему при создании элемента управления:

static class NativeMethods
{
    public const int WM_CREATE = 0x1;

    [DllImport("uxtheme.dll", CharSet = CharSet.Unicode)]
    public extern static int SetWindowTheme(
        IntPtr hWnd, string pszSubAppName, string pszSubIdList);
}

class ListView : System.Windows.Forms.ListView
{
    protected override void WndProc(ref Message m)
    {
        if (m.Msg == Win.WM_CREATE) {
            NativeMethods.SetWindowTheme(this.Handle, "Explorer", null);
        }
        base.WndProc(ref m);
    }
}

Разница между стандартным ListView и нашей расширенной версией: Разница в ListView http://img100.imageshack.us/img100/1027/62586064nt6.png

К сожалению, не существует простого способа для каждого элемента управления. Некоторые элементы управления даже не имеют никакой оболочки WinForms. Недавно я наткнулся на хорошую компиляцию в этой статье CodeProject , которую стоит посмотреть. Там также могут быть управляемые библиотеки, которые упаковывают это.

3 голосов
/ 17 февраля 2009

Если вы используете WPF, вы можете использовать библиотеку Microsoft Vista Bridge , которая имеет несколько полезных элементов управления. В противном случае просто посмотрите Руководство по Windows UX и сверните свое собственное. С этой страницы:

Некоторые функции, включенные в Библиотека примеров Vista Bridge - Диалоги задач и файлов в стиле Vista, Общие диалоги открытия и сохранения, Восстановление и перезапуск приложения, Известные папки, сетевые списки, мощность Управление, контроль учетных записей пользователей, CommandLink, Aero Wizard Управление, Системные значки и т. Д.

Кроме того, вы можете проверить Aero.Controls и Aero.Wizard , два бесплатных пакета WinForms с открытым исходным кодом, которые я написал. настроить вас с некоторыми стандартными элементами управления и мастера, соответственно.

2 голосов
/ 17 февраля 2009

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

Обычно эти действия выполняются на уровне темы Windows, иногда с помощью специальных обработчиков, которые изменяют внешний вид всех приложений.
Тогда есть инструменты, такие как FastAero , которые добавляют прозрачность всем формам Windows XP ( доступен исходный код ).

В любом случае, если вы хотите, чтобы ваши приложения выглядели как Vista, вы должны соблюдать Руководство по взаимодействию с пользователем для Aero.

Вы также можете использовать WPF для подделки элементов управления в стиле Aero , чтобы ваши приложения выглядели одинаково в любой версии Windows.

1 голос
/ 17 февраля 2009

Вы можете взглянуть на стороннее решение.

Мы используем DevExpress для создания стильных приложений WinForm на WinXP, в частности их элементов управления ленты WinForms

...