Mac*_*ack 10 api wpf winapi mfc
假设您是一名具有C++和C#基础知识的IT学生.我们假设您要设计以下应用:
并且你想学习一个Api,它可以让你编写像前面描述的那样的应用程序,并且:
那么,做出这些假设,你会选择什么Api?MFC,WPF,其他?我非常喜欢VCL和QT,但它们不是主流,我认为很少有雇主会要求你在QT或Visual C++ Builder中编写应用程序......
谢谢你的回答.
sta*_*ica 14
注意:以下答案是在几年前编写的,其中考虑了桌面应用程序开发.今天(2018年),您可能只是构建一个Web应用程序,最终得到一些合理的跨平台和独立于设备的东西.(例如,在服务器端使用ASP.NET Core,在客户端使用诸如React,Vue.js或Angular之类的UI框架/库).
Win32 API - 如果我是你,我会忘记它.直接通过Win32 API编写Windows应用程序只有在使用纯C进行编程,或者您确实需要进行大量系统调用时,或者如果您担心更"舒适"引入的额外开销时才有意义.平台或框架(例如下面提到的那些).直接通过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++编程更容易恕我直言,这也是针对Win32 API,MFC,Qt和wxWidgets的一个参数.)注意WPF不是跨平台的,它目前只存在于Windows平台上.
当然还有Java,包括它附带的UI框架.我不能说太多,因为我不是Java人,但我可以想象Java将是平台独立性的最佳选择; 它是某些行业(例如移动电话,银行业务,由于非常可靠的JVM和安全考虑因素)的主导平台(通过.NET).
因此,如果您计划主要使用Microsoft世界,我的建议将是.NET框架和UI的WPF .请记住,您仍然可以通过P/Invoke使用Win32 API(您不会接近"系统调用").
如果您喜欢使用C#进行编码并使用.Net框架,我建议您查看WPF.WPF是一个很棒的GUI框架,你可以做任何事情 - 并使它闪耀!WinForms可能更容易掌握,但我会说WPF更"未来证明".另一个好处是WPF与Silverlight非常相似,所以如果你能很好地处理WPF,你也应该能够编写Silverlight应用程序 - 如果你感兴趣的话.请不要费心学习MFC ..我不敢相信有很多人今天使用MFC的原因不是他们之前使用它的原因,也没有机会改变...
.Net程序员有很多好工作,因此除了C#之外还能够处理一些GUI框架,并且有关.Net框架的一般知识是值得的.
当谈到能够"提供诸如存档器,加密算法,编解码器等一些性能"的观点时,这实际上不应该取决于您选择的GUI框架.这种代码将在GUI层之外的层中写入,并且通常将绑定到GUI.使用WPF,你可以在一些独立于GUI层的类中用C#编写加密算法,然后用WPF编写的View将绑定到C#代码并从此处获得答案.但是,如果你使用WinForms,你仍然会做同样的事情,性能依赖于算法 - 而不是GUI.
在开始使用WPF时,有很多关于SO的问题可以帮助解决这个问题.所以你应该通过快速搜索找到很好的帮助.
祝好运!
| 归档时间: |
|
| 查看次数: |
3416 次 |
| 最近记录: |