如何为Windows创建自定义用户界面?

时间:2010-05-18 20:12:36

标签: windows winforms user-interface desktop-application

目前有许多Windows应用程序不使用本机Windows控件,没有标准窗口框架,通常看起来不同。有哪些推荐的技术来创建这样的接口?

7 个答案:

答案 0 :(得分:2)

从设计方面来说,如果您的界面不符合文档标准(如Windows UI指南),则必须直观。我认为新一代Windows应用程序将以类似于早期Web的方式经历一个成长阶段。过了一段时间,一些标准或共同主题将会发展。

答案 1 :(得分:2)

有充分的理由不这样做。就像那样,你很可能不会比Windows做得更好。 (也许它会看起来更好(在您看来),但它会表现吗?)。或者说这不是大多数用户所期望的。或者它在Windows 2011上看起来像s ****。

那说,这并不难。您只需处理WM_NCPAINTWM_NCHITTEST等WM_NC *事件。 NC代表非客户(窗口区域)。当然,在Vista / Win7上有一个技巧(你必须向DWM宣布它)。

答案 2 :(得分:1)

从实现方面来说,您可以使用WPF(Windows Presentation Foundation),假设您为.NET编写代码:)它有很多可换肤的控件,可能看起来像本机的,可能不是。

答案 3 :(得分:0)

你能给我们一些样品申请吗?一些不使用本机Windows控件的应用程序使用跨平台GUI库,如Qt for C ++或Tkinker。这些在不同平台上保持相同的外观。

我不建议故意让用户界面不同。你不能获得太多收益。你的控件几乎总是比本机控件更笨,你需要用户学习新的东西。现在,如果你是控件添加一个足够大的值,值得用户的时间,它就可以了。但是让他们习惯不同的按钮很少值得。

答案 4 :(得分:0)

我不确定这是否能回答你的问题。

您可以使用第三方皮肤控件,例如Infragistics或SkinSoft。 但是像布巴一样,我建议去WPF。

答案 5 :(得分:0)

模型 - 视图 - 控制器!它在网络应用程序或其他任何地方都很有价值。确保将程序中生成自定义UI的部分与程序中闪烁BIOS的部分分开。

答案 6 :(得分:0)

我知道这个问题已有10年历史了,但是没有答案提到使用Visual Studio中的选项,也不知道当时是否存在。

有一个选项可以删除Visual Studio中的窗口边框(称为borderStyle)。这就是使用C#的最简单方法。删除边框后,您要做的就是创建一个新界面。如果您正在寻找使用C ++进行的操作,我认为您需要使用DWM。我将举一个我在这里找到的例子。

https://github.com/melak47/BorderlessWindow

另一个示例(也许没有DWM?没有测试):

https://social.msdn.microsoft.com/Forums/vstudio/en-US/b98c4c06-9581-44d3-8e5a-4adb2316e653/win32-about-styles-how-can-i-do-a-borderless-window?forum=vclanguage

有很多人不鼓励在此线程中执行此操作,但是没有理由不这样做,如果您知道自己在做什么,那么您的应用程序看起来会很好。