微软办公套件2010是否使用WPF,还是普通的MFC?

14

我已经使用WPF一段时间了,现在正在尝试复制办公套件中一些漂亮的UI特性。虽然在WPF中非常容易实现,但我想知道如何使用MFC功能包来实现(因为我的公司尚未批准使用WPF)。由于流畅用户界面是在Office 2007中引入的,我想知道Microsoft是否除了VS2010或Expression Blend之外还在其他地方使用WPF,特别是在Office 2010中。

3个回答

23

Office 2010不使用WPF,也不使用MFC。事实上,Office一直使用自定义UI工具包,即使在Ribbon出现之前也是如此。然而,只需要一个主要的第一方应用程序来确保WPF作为UI平台的可行性。特别是当这个应用程序恰好是Visual Studio时,因为成千上万的Microsoft员工每天都在使用它。

但这并不意味着WPF是与Ribbon一起使用的最佳UI技术。Microsoft WPF Ribbon处理了许多边角情况不正确,所有我测试过的主要商业托管代码Ribbons(无论是WPF还是Winforms)都是如此。很难复制Office Ribbon——有许多微妙之处是难以预料的,并且只有当用户遇到边缘情况时才会出现。

Office Ribbon花费了200多年的工作时间,并由数万名Beta测试人员使用。(Jensen Harris估计在UX09中,办公室UI团队有大约15个PM,30个开发人员,30个测试人员,以及半打设计师和UI研究人员。)它是目前最好测试的Ribbon框架,但不幸的是,开发人员在Microsoft之外不能使用它。

第二可靠的Ribbon框架可能是Windows 7 Ribbon,它被Paint和WordPad使用。这个框架可以在Windows 7 SDK中找到,并已经回溯到了Vista。使用Native code和GDI,因此面向C++开发人员。请注意,它也没有与MFC绑定。


我觉得有趣的是,他们投入了如此多的资源来开发一个只能在内部使用的控件。除此之外,我还发现微软制作了UI框架(Winforms、WPF),但最新的Office客户端都没有使用它们构建。似乎使用WPF编写最新的客户端是非常明智的商业决策,因为他们可能需要构建自定义控件(需要测试),然后可以免费向WPF社区提供这些控件。 - The Muffin Man
即使是 Office 加载项也无法利用 Office 中的所有功能区功能。 - Chris

5
据我所知,它并没有以任何方式使用WPF。事实上,其中大部分仍然是用C++编写的。微软唯一发布的“大型”WPF应用程序是Visual Studio 2010和Expression Blend。

-3

你应该知道,WPF(与.NET框架一起)只是win32和com(direct2d等)的一层封装,所有这些都可以从普通的C++中访问,更不用说MFC了。他们早在2007年就已经用C++编写了所有的功能区代码,所以制作2010界面并不难。

回答你认为自己在问的问题,不,Office没有使用WPF。只有Visual Studio使用它。


15
WPF绝对不是Win32的一层(但它确实使用DirectX)。相比之下,Windows Forms则是Win32的一层。在WPF中,唯一依赖于Win32的是窗口本身(只是PresentationSource的一个具体实现),以及一些系统依赖项,例如OpenFileDialog。 - Thomas Levesque
2
@Thomas,这怎么可能不是呢?窗口部分是win32,其余部分是com的东西,就像我上面说的一样。 - Blindy
13
这个窗口本身仅支持Win32,因为它需要在Windows中显示;窗口中所呈现的所有内容与Win32无关,控件没有像WinForms一样的句柄,并且它们不是由系统绘制的。 - Thomas Levesque
2
实际上它都是在WM_PAINT上渲染的。我还是不明白你的观点是什么。 - Blindy
1
当然,这是在Windows中知道何时重新绘制窗口的唯一方法。 - Blindy
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接