C++ WinAPI中的windows10ui

C++ WinAPI中的windows10ui,c++,wpf,winapi,windows-10,modern-ui,C++,Wpf,Winapi,Windows 10,Modern Ui,我正试图构建一个类似于微软最近推出的用户界面。特别是那些针对Windows10操作系统(la)的产品 目前我使用WinAPI,但Windows.h和CommCtrl.h提供的所有控件似乎都是旧式/旧式UI元素。我特别寻找标题栏/菜单/状态栏元素(主客户端区域将由GDI/Direct2D上下文组成,因此没有什么特别的必要) 我找到了一些指向XAML的信息,但我认为这不是我想要的。WPF似乎是一个更有可能的候选人,但我也不确定情况是否如此 我希望这个是100%的本地(WINAPI/C+C++),但是

我正试图构建一个类似于微软最近推出的用户界面。特别是那些针对Windows10操作系统(la)的产品

目前我使用WinAPI,但Windows.h和CommCtrl.h提供的所有控件似乎都是旧式/旧式UI元素。我特别寻找标题栏/菜单/状态栏元素(主客户端区域将由GDI/Direct2D上下文组成,因此没有什么特别的必要)

我找到了一些指向XAML的信息,但我认为这不是我想要的。WPF似乎是一个更有可能的候选人,但我也不确定情况是否如此


我希望这个是100%的本地(WINAPI/C+C++),但是如果没有其他选择,我可以使用C语言来实现本地代码中的UI和存根。

< P>你使用XAML,或者C++、C或JavaScript编写Windows存储(以前的Metro)应用程序。如果使用C++,应用程序是100%本地的,但是如果使用C或JavaScript,当然需要使用虚拟机。 代码调用的API是WinRT,看起来像Silverlight。此外,您的应用程序还可以调用某些(但不是全部)Win32 API,这与.NET应用程序调用Win32的方式类似(例如,通过使用P/Invoke)。但是,即使你使用C++,因此你的应用程序是100%本地的,它仍然像浏览器一样沙箱。这意味着它无法访问整个磁盘或写入注册表中的HKLM。这是为了安全;Windows应用商店的应用程序需要安全,因此更受限制,比如从苹果应用商店购买的移动应用程序。这意味着你不能打电话。上面说:

最小支持客户端 Windows XP[仅限桌面应用程序]

当微软提到上面提到的“桌面应用程序”时,他们指的是Win32应用程序。这不包括Windows应用商店应用。但这让人困惑,因为在Win 8/8.1上,这些Windows应用商店应用程序是全屏的,但在Windows 10上,它们可以调整大小并重叠,出现在浏览器和任务管理器等传统Win32应用程序旁边,并与之混合。因此,即使它们与桌面应用程序出现在同一个桌面上,它们也不是桌面应用程序


我相信,如果Windows应用商店应用程序也针对Windows Phone 10、Windows IoT等,那么它就被称为Windows通用应用程序

是的,你是对的,是VS使用了wpf。然而,定制的chrome代码仍然有用。新的office 2016是在WinRT/Xaml中作为Windows通用应用程序完成的。如果不亲自模拟,WinAPI桌面应用程序中的“新外观”界面是不可能实现的。幸运的是,这些都是纯色的斑点,所以这可能并不难。@JonathanPotter-我很害怕。如果它是C#only选项,我肯定可以将逻辑和Direct2D内容编写为本机,并从C#调用它。关于开始使用这种UI风格有什么建议吗?这只是一个修改过的WPF吗?这不仅仅是因为它是C#,它只能通过Metro/Modern/Windows Store/WinRT/Universal/任何他们所谓的本周应用程序来完成。不仅仅是UI,整个应用程序都必须在这个框架下编写。经过昨晚的一点挖掘,这绝对是我需要的。不幸的是,“功能区”/“命令”栏似乎不是Windows元素,必须进行自定义管理(或使用第三方选项,如BCGControlBar或DotNetBar)。有一个,但似乎仅限于桌面:/不确定UWP是否也有功能区。如果你的应用程序要使用功能区和其他传统常用控件,让它成为Windows应用商店应用程序有什么好处@andlabs:MS提供了Ribbon框架和BCGSoft的MFC Ribbon,但是是的,这些功能区只用于桌面应用程序。他们花了很多年来提供这些,所以我认为制作WinRT版本也需要很长时间。当然,还有很多第三方软件可用。@DavidChing;这也假设Ribbon适合WinRT设计模型,而WinRT设计模型(至少不适用于UWP;不确定UWP之前的情况)