我有一个十年前的MFC VC ++桌面应用程序。该应用程序的美妙之处在于它可以在Windows 2000到Windows 7之间运行,使用超过15种语言。它在winsocket之上使用IPC和SSL进行多线程处理。
最近我正在阅读Windows 8 Metro风格,我们将无法运行现有的应用程序。这是否意味着Windows正朝着杀死VC ++或MFC的方向发展?
我是否有可能为所有Windows版本保留相同的代码库?我是否有针对winsock和MFC的替代API?是否必须在HTML5中编写应用程序?
答案 0 :(得分:2)
最近我正在阅读我们无法获得的Windows 8 Metro风格 运行现有的应用程序
我发现根据Windows Runtime (WinRT)更容易思考问题。基于ARM的Windows 8系统将仅支持WinRT程序。基于x86的Windows 8系统能够运行WinRT程序和现有的Win32程序。
所有Metro风格应用程序都是WinRT应用程序的含义(或可能是假设?)。当然,WinRT旨在用于构建Metro style applications。我可以想象构建看起来像Metro应用程序的传统Win32应用程序 - 大方形活动磁贴,应用程序表面延伸到可见桌面的左侧和右侧等。我不确定这些应用程序是否真的被视为“Metro风格”应用程序甚至如果它们的构建方式与Metro应用程序相同。
现有应用程序不能在基于ARM的Windows 8系统上运行,也不会在基于x86的Windows 8系统的非桌面部分运行。他们将在基于x86的Windows系统的桌面部分运行。这就是Visual Studio运行的地方,也就是PhotoShop可能运行的地方,那就是当前在Windows 7上运行的所有程序都将运行的地方。
这是否意味着Windows正朝着杀死VC ++或MFC的方向发展?
绝对不是。 MFC应用程序将在基于x86的系统上的Windows 8桌面环境中正常运行。 MFC应用程序不在基于ARM的Windows 8系统上运行 - 但是有很多地方MFC应用程序无法运行。
对于VC ++,如果你愿意,你可以构建Metro风格的应用程序using C++,你只需要遵循Metro“风格”。
是否有可能为所有窗口保留相同的代码库 版本
这取决于“所有Windows版本”的含义。今天在基于Windows 7 x86的系统上运行的代码明天将在基于Windows 8 x86的系统上运行。如果这是您的目标市场,那么您就完成了,您无需更改代码。你唯一不会有的是活动瓷砖。但是你可以使用Metro风格的API构建一个活动的磁贴,并将其重新绑定到应用程序的逻辑中,如果这有意义的话。
如果您想支持基于ARM的Windows 8系统以及基于x86的系统,或者如果您希望所有程序在基于x86的系统上运行时具有Metro外观,那么您将不得不更改程序使用HTML / CSS或XAML和WinRT API而不是MFC和Win32 API。
或者如果你想要两个世界,也许你甚至可以从UI中分离你的程序逻辑,然后围绕这个共同逻辑构建一个MFC皮肤和Metro皮肤
我是否有针对winsock和MFC的替代API?
对于网络,您可以使用JavaScript,Visual Basic,C#和C ++中的number of classes。要构建用户界面,您可以使用HTML/CSS,也可以使用XAML。
或者如果符合您的需要,您继续使用MFC。您可能永远不会构建一个带有选项卡式UI的Multiple Document Interface的Metro风格应用程序!
答案 1 :(得分:0)
Metro Style就是用户体验和不同的UI布局。如果你想在你的应用程序中使用metro风格的UI,那么你需要在你的应用程序周围编写一个WinRT包装器来使用它。这并不意味着您的应用程序将无法在Windows 8中运行,所有的leagacy应用程序仍在Windows 8中运行