怎麼用 C++ 在一個月內做一個視窗程序,不要 MFC?

我們的c++大作業不想用win32控制台呈現,想做一個交互窗口版的。


www.gaclib.net 滿足樓主的夢想


其實除了MFC應該可以先QT吧。當時我做作業的時候也是這樣,想的就是不要用MFC...但我和LZ想的不一樣,我果斷地去學了JAVA然後就做出來交了


wxWidgets 值得推薦


使用Qt吧!
Qt非常容易入門,如果有C++基礎的話。
我曾在一周之內使用Qt完成了我的C++大作業(一個通訊錄管理器),而之前並沒有過使用Qt的經驗。之前想用MFC來著,但是發現自己太菜學不會而作罷。
Qt的文檔相當詳細,對初學者十分友好,Qt Creator也是一個不需要怎麼學習就可以使用的開發環境,第一次用的話可以看看samples里的代碼,在Qt Creator里在不懂的地方選中按下F1即可查看文檔。
Qt是可以對對話框的界面進行可視化的設計的,在快速構建能用的界面上很有幫助。


說一下自己在桌面端開發的一些經驗,對C++編程只是了解皮毛,期待更專業的回答。
建議還是用現有的UI框架,否則自己寫界面控制項造輪子是一件技術要求比較高、非常耗時間的事情。
MFC其實是最好的選擇(針對你們的情況),因為它歷史悠久,使用廣泛,出現問題隨便一搜基本就有了答案。
Qt是一個跨平台應用程序和UI開發框架,我了解的不是很多。但我覺得文檔資料不是很豐富,出現問題解決起來要相對難一些。
C++ Builder也提供了可視化開發解決方案,沒用過,不亂評論。C++ Builder下有個庫叫DXScene,基於DirectX,可以實現比較炫的界面效果。
還有個思路就是核心演算法或功能使用C++編譯為DLL,然後界面用別的語言做。比如WPF、Flash、Python。我用過Flash + DLL的方式做過應用,需要第三方程序將swf打包成exe,界面用ASwing做的,效果很不錯。
要是造輪子呢,可以用GDI/GDI+之類的慢慢寫。高端點可以用DirectX或OpenGL,極其裝b。


我記得小時候買過一本Microsoft C++ 7 的教材,裡面有一個徒手建立windows程序的例子,700行。一個空窗體,啥都沒有。現在那本書必然是找不到了,都快二十年了……不要找我對質……


pyqt,一天內能寫一個管理系統了,戰鬥力杠杠的。曾經一天用pyqt寫遊戲運行期數值編輯器的飄過。


老師要是用linux跑lz的大作業,lz就歇菜了。


「視窗程序」這個概念太寬泛,最簡單的只要創建一個窗口外加來一個消息循環就可以算一個「視窗程序」,這種東西熟悉的人用最原始的Win32 API半小時之內就可以寫出來。當然還有一個簡單的辦法,就是用VC的AppWizard直接生成,如果你有玩DOTA的手的話估計幾秒鐘就搞定了。

如果你說的是以一個完整的PC客戶端程序,那就牽涉到很多方面,比如現在流行的互聯網客戶端一般要包括這樣幾個部分:

1.首先是界面庫,常見的是MFC,WTL,Qt還有互聯網領域常見的一些DUI庫比如DUILIB

2.其次要有一個CrashReport,可以抓取崩潰信息,發送到指定的伺服器提供給你分析。

3.然後還要有一些底層通信庫,比如做HTTP訪問用curl,一般的長連接通信可以用windows socket自定義協議自己寫

4.然後還要有統計模塊,統計用戶行為,發送給伺服器在伺服器上可以進行查詢分析(也就是我們常說的大數據的一般數據來源)

再往細處分,視頻客戶端,IM客戶端等等所需要的各種框架和庫有共同的也有不同的,這就需要具體問題具體分析了。


Qt或者wxWidgets ,wxWidgets比較輕量級,Qt比較龐大,Qt可以說是有自己完善的類庫了。從GUI到資料庫操作,GDI等等。


我當年使用的是Borland 家的VLC代替MFC,寫起來和今日的.Net類似
寫錯了,是VCL


wxWidgets 也是一個跨平台的UI工具,可以用來完成作業。不過中文的資料有些少,遇到問題也會稍微難找到答案。不過示常式序功能很全面,可以借鑒。


MFC其實挺簡單的,寫個作業足夠了,它很老但是還能用也有很多人用,懂得人很多,任何問題都有解決方案了,微軟現在還是正式支持它。

用WinForm的話,很簡單的,和以前的VB差不多,你可以用managed C++寫,當然這個東西和一般認為的C++不太一樣,大家一般用C#.


完全用API寫,可以做這樣的練習。
1. 只有一個對話框窗口的程序:你需要用VS的資源編輯器畫個對話框,實現個10行左右的對話框窗口函數,一個差不多3~5行的WinMain,然後加起來差不多20行左右的代碼就可以實現一個窗口程序。
2. 一個單窗口的程序:你需要實現個窗口函數,一個WinMain,裡邊有一堆RegisterClass, CreateWindow 的調用外加一個消息循環,我的映像應該是100行以內可以搞定。
3. 一個MDI(多文檔)的程序。映像里300行以內可以搞定。
4. 一個帶長時間任務的消息響應的窗口程序,觀察一個長任務對窗口的消息響應及顯示的影響
5. 在4的基礎上解決長任務對窗口的消息響應及顯示的影響

搞完這些,對Windows的窗口,消息就會有比較好的理解,再去玩別的MFC/ATL/WTL應該就比較好的基礎了。
我上面說的都是老古董的方法, 現在都被click, click, click代替了。。。


問題被挖上來了
最近用WPF 很不錯


我曾經用純C調用Windows API的方式寫過窗口程序(實現任務管理器的功能),配合VS的可視化GUI編輯器,寫起來還算爽。。。不曉得C++是不是也可以


推薦使用WTL框架,和MFC很像,可以看作輕量級的MFC。它是微軟ATL小組開發的非正式產品,有全部的源代碼,用來學習非常好。目前金山開放了其自身的界面庫,也是基於WTL的,開發出來效果還行,也是開放源代碼的。主要是WTL和MFC有些相似,學起來比較快,而且編譯出來的程序不依賴DLL,沒有太多冗餘代碼,執行效率比MFC的要高。


既然GUI不複雜,還要求一個月內,建議還是WIN32 API吧

雖然有大把其他更方便的GUI庫可以幫組你,但是如果你一點GUI編程經驗都沒有,越方便的庫往往會變成越深的坑,一旦出了GUI界面有關的bug,你根本不知道該排除什麼,你會很想去了解細節,而封裝的越好往往意味著細節隱藏的更深,結果一個月很快就過去了,而最終找到的問題可能只是一個非常簡單的錯誤。用API你至少可以像使用C庫函數一樣簡單明了的信任它。


vc的嚮導選win32 application,下一步別選空,就會生成一個單窗口的例子程序了,包含windows最基本元素:標題條,菜單,view區域。

windows開發最好還是用vc來寫吧,自己手寫幾個消息循環,create幾個window。用其他跨平台的工具,會把很多windows的細節掩蓋掉讓你無法了解windows的一些基礎原理。

另外,mfc的確又笨又重,不想手寫windows一些基礎東西的話,可以考慮用wtl。


果斷使用Qt啊,簡單易用,文檔寫的又漂亮,想要做的稍微好看些也不要太費工夫,做作業Qt一些基礎的東西就夠了,跨平台支持的也好,一套代碼跑遍所有平台,稍微秀一下我用Qt寫的東西。。。Ubuntu上跑的。。。


推薦閱讀:

MFC程序員的前途和出路是什麼?

TAG:MicrosoftWindows | C | MFC |