【发布时间】:2011-02-21 02:11:54
【问题描述】:
现在有许多适用于 Windows 的应用程序不使用本机 Windows 控件,没有标准的窗口框架,并且通常看起来不同。创建此类接口有哪些推荐的技术?
【问题讨论】:
标签: windows winforms user-interface desktop-application
现在有许多适用于 Windows 的应用程序不使用本机 Windows 控件,没有标准的窗口框架,并且通常看起来不同。创建此类接口有哪些推荐的技术?
【问题讨论】:
标签: windows winforms user-interface desktop-application
有充分的理由不这样做。就像那样,您很可能不会比 Windows 做得更好。 (也许它会看起来更好(在您看来),但它会表现得更好吗?)。或者这不是大多数用户所期望的。或者它在 Windows 2011 上看起来像 s****。
也就是说,这并不难。您只需处理 WM_NC* 事件,例如 WM_NCPAINT 或 WM_NCHITTEST。 NC 代表非客户端(窗口区域)。当然,Vista/Win7 有一个技巧(你必须向 DWM 公布)。
【讨论】:
从实现方面来看,假设您为 .NET 编写代码,您可以使用 WPF(Windows Presentation Foundation):) 它有很多可换肤的控件,可能看起来像原生控件,也可能不是。
【讨论】:
从设计方面来看,如果您的界面不遵循文档化标准(如 Windows UI 指南),则它必须是直观的。我认为新一代的 Windows 应用程序将以类似于早期 Web 的方式经历一个成长阶段。一段时间后,一些标准或共同主题将会演变。
【讨论】:
您能给我们一些示例应用程序吗?一些不使用本机 Windows 控件的应用程序使用跨平台 GUI 库,例如 Qt for C++ 或 Tkinker。它们在不同平台上保持相同的外观。
我真的不建议故意让您的用户界面与众不同。你不会有太多收获。你的控件几乎总是比原生控件更容易出错,而且你要求用户学习新的东西。现在,如果您是控件,则添加足够大的值以值得用户花费时间就可以了。但是让他们习惯不同外观的按钮并不值得。
【讨论】:
我不确定这是否能回答您的问题。
您可以使用第三方蒙皮控件,例如来自 Infragistics 或 SkinSoft 的控件。 但就像 Bubba 说的那样,我建议使用 WPF。
【讨论】:
模型-视图-控制器!它在这里与在网络应用程序或其他任何地方一样有价值。请务必将生成自定义 UI 的程序部分与刷新 BIOS 的程序部分分开。
【讨论】:
我知道这个问题已有 10 年历史,但没有一个答案提到在 Visual Studio 中使用选项,不知道当时是否存在。
Visual Studio 中有一个删除窗口边框的选项(称为borderStyle)。这是最简单的方法,使用 C#。删除边框后,您所要做的就是创建一个新界面。如果你想用 C++ 来做,我认为你需要使用 DWM。我会举一个我在这里找到的例子。
https://github.com/melak47/BorderlessWindow
另一个例子(可能没有 DWM?没有测试):
在这个帖子中有很多人不鼓励这样做,但没有理由不这样做,如果您知道自己在做什么,您的应用程序会看起来很棒。
【讨论】: