簡體   English   中英

如何用C ++編寫現代Windows軟件?

[英]How to write modern Windows software in C++?

我對現代Windows軟件如何用C ++編寫非常感興趣。 我問過曾經從事Windows軟件工作的朋友,他告訴他最后的工作是MFC,然后是WTL。 他說MFC不再是現代的,但仍然使用WTL,但他不太了解。 他還說WTL不是那么現代,在此之前他用純Windows API編程。

如何為Windows Vista或Windows 7編寫軟件? 你還在使用WTL嗎? 那么MFC和純Windows API呢? 或者現在有其他圖書館嗎?

我不太了解它,但是在編寫現代Windows軟件時,C#還是其他.NET語言取代了C ++?

從我過去幾年看到的情況來看:

  • WTL是一條生命線。 由微軟放棄,被粉絲接收,並有幾個非常忠誠的粉絲。 非常干凈,但學習曲線陡峭,風扇基座逐漸縮小。 雅虎集團不是很活躍。 我不能推薦它。

  • 當MSFT發布功能包時,MFC再次獲得了生命。 相當廣泛,有點不MFC-ish,它強大支持蒙皮,對接布局和色帶。 我認為它會非常受歡迎,但從來沒有看到很多開發者跳上它。 MSDN論壇問題一直很少。 如果你有一個現有的MFC代碼庫,那么一定要看看。 VS2010的另一個MFC刷新增加了Win7功能,它確實保留了公司的基本UI解決方案。

  • wxWidgets仍然存在。 沒有親身經歷,但主啊,我聽過的少數修煉者正在掀起風暴。 真正的苦澀的東西。

  • Qt已經存在了很長一段時間,但相當頻繁,特別是在去年。 誰使用它真的很喜歡它。 它正在超越UI類庫的范圍,他們的用戶正在積極尋找以字母Q開頭的常見編程任務的解決方案。這是一個強大的信任投票。

但是,如果您使用的是Microsoft堆棧,則這些類庫中沒有一個是真正的UI開發所在。 WPF是房間里的大象,它的能力比上面列出的要大一百英里。 它破壞設備和范例邊界的能力是強大的,編寫在桌面上運行的代碼以及Web瀏覽器和手機都很難被擊敗。 但是C ++不是其中的一部分。

WTL, Qt, wxWidgets非常常見。

  • 它們都允許快速的GUI開發,並且非常通用(第三種選擇,在我看來,需要更多的時間來習慣)。 第二和第三種選擇非常酷,因為它們是跨平台的。

  • 在純WinAPI中編寫窗口非常古老,但有時可能很有趣。

  • 與以前的選項相比,構建窗口的C#方法更加快速 ,但靈活性稍差。

看看Qt - 你可能會喜歡它。 除非您更喜歡非便攜版本。 但即使你不打算在OS X,Linux,手機上構建......,Qt框架編寫得很好,有很好的文檔記錄並且可行。 SDK現在也包含一個不錯的IDE(Qt Creator)。

如果您的主平台是Windows,則每次都有WTL。 Google Chrome使用它,Spotify使用它。 它最高效,最靈活,不是資源匱乏。 靈活的我的意思是你可以使用它與純Win32 API代碼/其他C ++代碼沒有太大的困難。

有關更多WTL信息: WTL鏈接的集合

在.NET(C#,VB.NET,...)中,GUI編程的最前沿是WPF (取代WinForms)。 .NET中的編譯代碼實際上是CIL ,它在運行時由JIT編譯成本機代碼。 這樣做的好處是您不必關心64位或32位目標系統。

在C ++中,Qt似乎是一個很好的解決方案,因為它設計簡潔並提供了大量服務。 我在Qt中不喜歡的是它的編譯往返,它是如此之慢,有一個moc編譯器,編譯器,然后鏈接,與C#/ .NET相比需要很長時間來獲取可執行文件。 另一方面,即使在嵌入式系統中也可能遇到它,在這種情況下使它變得有趣。

我建議你至少看看C#/ .NET並在決定之前進行實驗。

在評估之后,我遇到了純Win32或WTL是編寫不基於WRT的現代風格win應用程序的唯一方法。

新面貌是重點。 MFC在Win8和Win10上看起來很糟糕,特別是所有這個功能包的眼睛糖果。 純MFC雖然好但很胖,而且視圖模型部分只是暴躁而且我更喜歡WTL。 但它沒有記錄,這是如此糟糕和可怕。

WxWidgets是一個丑陋的玩具。

QT也不再是另類。 他們過分關注移動和appframework。 如果你去MacOSX你根本不能使用QT(是的它會運行,但它會讓你嘔吐UX)。

WinRT是如此嚴格,缺乏功能,你不能使用它。 並且您可以確定它會失敗,因為沒有人在平板電腦/手機上使用WinStore或Windows。 那么為什么呢?

如果您認為用戶欣賞緩慢而胖的應用程序,WPF就可以了。 它看起來更好,但所有的眼睛糖果現在不再是UI設計指南的一部分,並且小部件的功能集不如Win32本機小部件。 難以置信但真實。 我鎖定你使用不可移植的C#,在我看來這是不贊成的,因為現在性能再次重要(因為性能是能量,是生命時間)。

即使Herb Sutter和其他高級MS員工也告訴你C ++是未來。 而下一個殺手級應用程序是基於C ++ 14而微軟知道的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM