Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将WinUI与C++;_C++_User Interface_Winapi_C++ Winrt_Winui - Fatal编程技术网

C++ 将WinUI与C++;

C++ 将WinUI与C++;,c++,user-interface,winapi,c++-winrt,winui,C++,User Interface,Winapi,C++ Winrt,Winui,我将尽可能简明扼要地总结我的问题: 我有一个传统的C++项目,它使用WiAPI创建和管理UI元素。我想用一个更现代的框架来代替这个框架,它支持面向对象编程,并具有某种可视化设计器。我打算通过逐渐用新框架替换旧的基于WinAPI的代码来实现这一点(例如,我可以引入一个使用新框架的新弹出窗口,而UI的其余部分仍然使用旧的窗口过程等等) 我最初的计划是使用Qt,因为它允许我方便地将UI代码包装到对象中,我可以轻松地实例化和管理这些对象。它还有一个设计器,可以让我创建自定义UI元素(包括自动布局管理)

我将尽可能简明扼要地总结我的问题:

    我有一个传统的C++项目,它使用WiAPI创建和管理UI元素。我想用一个更现代的框架来代替这个框架,它支持面向对象编程,并具有某种可视化设计器。我打算通过逐渐用新框架替换旧的基于WinAPI的代码来实现这一点(例如,我可以引入一个使用新框架的新弹出窗口,而UI的其余部分仍然使用旧的窗口过程等等)
  • 我最初的计划是使用Qt,因为它允许我方便地将UI代码包装到对象中,我可以轻松地实例化和管理这些对象。它还有一个设计器,可以让我创建自定义UI元素(包括自动布局管理)、一个VisualStudio扩展,一般来说,过去的经验告诉我Qt非常适合我的用途。然而,这里的用户警告我,它与WinAPI的配合不好,我基本上必须从头开始重新构建应用程序
  • 有人建议我改用WinUI,即XAML与C++/WinRT相结合,因为它们应该提供与我上面描述的相同的灵活性。我成功地复制了指南的结果,但除此之外似乎没有什么有用的材料
  • 为了获得清晰的答案,Microsoft文档很难浏览。目前,上面的指南让我相信我仍然会坚持使用WinAPI,因为似乎没有明显的方法将UI代码包装到对象中,最好是那些我可以从现有基类派生的对象(例如某种基本窗口对象)
我有以下工作环境:

  • MSVC
  • 支持的最新C++特征级
  • Visual Studio 2019
  • Windows 10(即,如果我不再兼容Windows操作系统,我不介意)
我需要的是:

    > P>一个明确的答案,它是否可以与XAML和C++ +WRET一起工作,这与如何用C++设计QT中的UI代码类似。精确的奇偶校验是不必要的,我只是想消除使用WinAPI管理UI的麻烦,因为我实际上必须“手工”完成所有工作

  • 如果上述情况属实,那么在哪里可以找到工作流各个步骤的指南?如何创建“窗口对象”,如何使用布局管理设计窗口,如何处理UI事件等

  • 如果需要在我尝试升级的遗留WinAPI应用程序的上下文中执行上述操作,是否同样可行


还有wxWidgets,它仍然是一个USER32 GUI,但现在它是面向对象的,重复的部分被移动到库中。但是,由于所有相同的Win32 API概念仍然存在,所以应该可以逐段移植,而不是扔掉现有的东西,进行完全替换。@BenVoigt您确定可以使用混合/匹配范例吗?例如,我认为一个有效的消息循环会很困难。@Markransem:为什么?通常的GetMessage+TranslateMessage+DispatchMessage循环可以很好地处理任意数量的窗口和任意数量的窗口类,无论它们是内置的(“文本”、“按钮”等)、公共控件(“LISTVIEW”等)、第三方库,在主程序中使用直接WinAPI调用实现,在wxWidgets面向对象包装类的帮助下在主程序中实现。。。。如果您的窗口库需要向主消息循环中注入代码,那么该库将被破坏。从长远来看,您不会喜欢使用WxWidgets。WxWidgets的开发在过去的10年中几乎已经死亡。因此,不要期望他们在WinUI3准备就绪时(或明年4月准备好showtime的GTK4)迁移到WinUI3。我建议在您的应用程序的其他部分工作并等待GUI转换,直到WiuII3的预览4或第一个测试版可用,然后再考虑。@ YaSuthh WiUI 3确实看起来很有前途。这可能成为Windows的GoToUI工具包。Beta 3目前已经发布,这意味着还没有多少示例代码发布。我试图弄清楚如何将Win32应用程序的基础知识移植到WinUI3,但很多事情并不明显。这就是为什么我在GitHub()上问了一个问题,如何最好地做到这一点。目前还没有任何答案,但您可以对该问题发表评论,以提高其可视性,并提示Winui3团队作出回应。