用C#制作Vista风格的应用程序

Kre*_*dns 4 c# windows-vista visual-studio

我正在运行windows vista,并希望看起来像普通的vista程序.关于如何构建Vista Style应用程序是否有任何非常好的教程/文章?我还想学习如何使用本机代码并将其转换为C#,如例所示.

gix*_*gix 9

如果您正在使用WinForms,则相对容易实现它,因为WinForms基于本机Win32控件.许多控件都有通过设置其他标志(通过向本机控件发送消息)或使用SetWindowTheme来增强渲染的方法.这可以通过Interop实现.

举个例子,拿一个简单的ListView.如果你想要一个资源管理器风格的列表视图,你可以在ListView的公开句柄上使用SetWindowTheme.我们使用interop来访问本机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);
    }
}
Run Code Online (Sandbox Code Playgroud)

默认ListView和我们的增强版之间的区别: ListView差异http://img100.imageshack.us/img100/1027/62586064nt6.png

不幸的是,每种控制都没有一种简单的方法.有些控件甚至没有任何WinForms包装器.最近我在这篇CodeProject文章中偶然发现了一个很好的编译,值得一看.也可能有管理库包装这个.