我正在使用Windows Vista,想让它的外观看起来像普通的Vista程序。有没有关于如何构建Vista风格应用程序的非常好的教程/文章?我还想学习如何使用本地代码并将其转换为C#,就像这个例子一样。
我正在使用Windows Vista,想让它的外观看起来像普通的Vista程序。有没有关于如何构建Vista风格应用程序的非常好的教程/文章?我还想学习如何使用本地代码并将其转换为C#,就像这个例子一样。
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 == NativeMethods.WM_CREATE) {
NativeMethods.SetWindowTheme(this.Handle, "Explorer", null);
}
base.WndProc(ref m);
}
}
默认ListView和我们增强版之间的区别: ListView difference http://img100.imageshack.us/img100/1027/62586064nt6.png
不幸的是,并非每个控件都有一个简单的方法。有些控件甚至没有任何WinForms包装器。最近我偶然发现了一篇很好的编译在这篇CodeProject文章中,值得一看。可能还有一些托管库将其打包。
如果您想让 Windows XP 的应用程序看起来与 Vista 一模一样,那么这将非常复杂,因为您需要覆盖绘制窗口的方式,以便设计出兼容的版本。
通常这些事情是在 Windows 主题级别上完成的,有时通过包含特殊处理程序来改变所有应用程序的外观。
然后有像 FastAero 这样的工具,它们会向所有 Windows XP 窗体添加透明度(源代码可用)。
无论如何,如果您想让您的应用程序看起来像 Vista,您需要遵循 Aero 的Windows 用户体验交互指南。
您还可以使用WPF 来伪造控件的 Aero 样式,这样您的应用程序在任何版本的 Windows 上看起来都很相似。
您可以考虑使用第三方解决方案。
我们使用DevExpress来实现在WinXP上具有良好样式的WinForm应用程序,具体来说是他们的WinForms Ribbon Controls。