gpt4 book ai didi

wpf - 关于WPF,Win32,MFC的棘手问题

转载 作者:行者123 更新时间:2023-12-04 03:00:00 32 4
gpt4 key购买 nike

假设您是一名具有C++和C#基本知识的IT学生。假设您要设计以下应用程序:

  • 需要提供一些性能,例如存档器,加密算法,编解码器
  • 利用一些系统调用
  • 有一个gui

  • 并且您想学习一个Api,它将使您能够编写类似于前面所述的应用程序,并且:
  • 是主流
  • 是 future 的证明
  • 使您能够找到一个体面的工作
  • 很简单-我的意思是像VCL一样容易,而不像winapi
  • 一样容易

    因此,基于这些假设,您会选择哪种Api? MFC,WPF,其他?我真的很喜欢VCL和QT,但是它们并不是主流,我认为很少有雇主会希望您使用QT或Visual C++ Builder编写应用程序。

    感谢您的回答。

    最佳答案

    Note: The following answer was written several years ago with Desktop application development in mind. Today (in 2018), you'd probably just build a web application to end up with something reasonably cross-platform and device-independent. (For example, using ASP.NET Core on the server side, coupled with a UI framework/library such as React, Vue.js, or Angular on the client side).


  • Win32 API -如果我是你,我会忘记的。仅当您使用纯C语言编程,或者您确实需要执行大量系统调用,或者担心更“舒适”的程序所带来的额外开销时,才可以直接通过Win32 API对Windows应用程序进行编程。平台或框架(例如以下命名的平台)。直接通过Win32 API进行UI编程非常麻烦,困惑,您需要处理很多细节。它也不是完全独立于平台的,但是您可能会担心也可能不会担心。
  • MFC -如果您使用C++编程并在Windows平台上进行了固定,则可能是一个选项。我从来不了解它的优点是什么,除了它使Win32 API更舒适(AFAIK,它基本上是Win32 API周围的面向对象包装的集合,消除了其中的一些复杂性/困惑性)。另外,它也不是完全独立于平台。
  • Qt wxWidgets -相当广泛的UI框架。在平台独立性发挥作用的地方,可能是不错的选择。 AFAIK两种框架均针对C++语言。
  • WinForms(.NET)-与MFC类似,它也基于Win32 API(USER32和GDI +)。 AFAIK WinForms框架现在正在移植到Mono,因此有些跨平台。但是,它并不是完全最新的技术。对于复杂的UI,有时也会有些迟钝。如果今天必须决定使用哪个框架,我宁愿选择...:
  • WPF(.NET)-比WinForms更现代,具有更多的图形功能,并且显然是更快的渲染速度,因为它不再基于Win32 API(GDI)。 (它在.NET上运行,我找到了一个很好的平台来开发。C#编程比C++ IMHO编程容易得多,C++ IMHO也是反对Win32 API,MFC,Qt和wxWidgets的一个论据。)请注意WPF不是跨平台的,到目前为止它仅存在于Windows平台上。
  • 当然,还有 Java ,包括它随附的UI框架。因为我不是Java人士,所以我对此不多说,但是我可以想象Java将是平台独立性的最佳选择。并且在某些行业(例如,由于非常扎实的JVM和安全考虑),在移动电话,银行业务方面,它是(通过.NET的)主导平台。

  • 因此, 我的建议将是.NET框架,以及用于UI的WPF(如果您打算主要留在Microsoft世界中)。请记住,您仍然可以通过P/Invoke使用Win32 API(不会比它更接近“系统调用”)。

    关于wpf - 关于WPF,Win32,MFC的棘手问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2484906/

    32 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com