青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

huaxiazhihuo

 

MFC,一開始就錯了

        謹以此文祭奠過去多少年下來,日日夜夜學習MFC源代碼的寶貴時光。

        曾經(jīng)以為MFC是世界上最神圣無比的東西,發(fā)誓在沒徹底弄透MFC之前,絕不越雷池半步,碰都不要去碰LISP、ERLANG、PYTHON、VCL、ATL、STL、LOKI、BOOST各種美妙的好東西。即使一再聽到高人說MFC設(shè)計得不好,非常糟糕,也都至死而不悔,然后只要稍微聽到有人在說MFC的偉大,心里就特別高興。買了各種各樣的VC方面的書,什么四大天王、什么幾十百千例、什么VC項目實例,徹夜苦讀,單步調(diào)試,一次又一次地徘徊在MFC套來套去的各種美妙代碼之中,觀察里面各個對象的值。一次又一次地感嘆MFC的偉大,一直在想,這輩子,如果能徹底地掌握MFC里面的一切秘密,朕就心滿意足了。終于有一天,終于徹底醒悟,原來MFC真不是好東西,不過就是那些伎倆而已,真不該將它看得如此的偉大。這種念頭一起來,再回過頭來看MFC的一坨一坨代碼,只覺得清晰無比,又感覺代碼之中充滿了各種無奈。接著再看看那些VC方面的書,除了四大天王還稍微有些可取之處,其他的任何一本,奇臭無比,沒有一行代碼經(jīng)得起推敲, 文筆也糟糕無比,其內(nèi)容又一再重復(fù),抄來抄去,真正是一本又一本的狗屎。 感嘆一下:這些書犧牲了多少寶貴的樹木,又折磨死了多少讀者的腦細胞,實在罪大惡極。

        在MFC大河日下的當今的大環(huán)境之下,在下也不想對它落井添石,畢竟也在其上學到不少好東西,特別是閱讀代碼的能力,試問這么糟糕復(fù)雜的框架都可以精通,天下還有什么代碼能看不懂(別自信滿滿,你敢碰BOOST里面的那些奇技淫巧,匪夷所思的幻碼嗎)。但實在忍受不了軀體內(nèi)另一個人日日夜夜,旦夕不停的訴求,兼之又一直恨鐵不成鋼,又為自己失去的青春陣痛不已。而VC2008中BCG的出現(xiàn)之后,VC2010還依然保留著那些蠢笨無比的BCG文件,不思悔改,終于讓某徹底對MFC死心了,這貨沒得救了。

        好吧,廢話少說,趕緊進入正題。

        國內(nèi)C++界中一大俠說過,任何東西,都要先抓住其主干,其他的一切細節(jié),都可以留待以后慢慢補充,否則,一開始就陷入細節(jié),想跳出來就不容易了。大俠此語,實在有道理。(不知為什么,此大俠后期一直在對C++表示不滿,當然,人家現(xiàn)在的境界,豈是我等小民所能體會)。不說其他,就說在C++中,必須站在一個高度上,縱觀全局,才能將一切看得通通透透。于是,下面就嘗試爬上高峰,來俯瞰MFC中的眾生。MFC的主干,在下看來,既不是什么六大關(guān)鍵技術(shù),也不是什么文檔視圖結(jié)構(gòu),更不是COM的封裝,而是為了將原始的API中的各種對象,好比窗口、GDI、設(shè)備環(huán)境等,都映射成相應(yīng)的多線程安全的C++對象,好比將HWND搞成CWnd,以期減輕WINDOWS下界面開發(fā)的工作量。

        這種想法,其實也無可厚非,如果真能封裝得好,確實可以提高生產(chǎn)代碼效率,但是從C++和WINDOWS的設(shè)計觀念中來看,這種映射,還是存在很大的問題,稍后再述。問題在于,MFC的實現(xiàn),異常丑陋呆板,通過幾個全局的線程安全局部變量的映射表,將句柄(Handle,此詞譯得相當令人惡心)與其相應(yīng)的C++對象指針形成一一對應(yīng),并且指定,在大部分的消息處理和參數(shù)傳遞中,所有的參數(shù)由原本的句柄一律由對象指針來代替,然后就高高興興地宣稱已經(jīng)完成任務(wù)了,這實在讓人哭笑不得。不說別的,即使是消息處理,MFC即使已經(jīng)做了很大的努力,也都無法將句柄參數(shù)搞成對應(yīng)的對象指針,單是這一點,就已經(jīng)失敗了。然后再看看,它最后封裝的做法,不過是將API函數(shù)中的第一個參數(shù)為句柄的都改成相應(yīng)的C++對象的函數(shù)成員,好比將SetWindowText搞成CWnd::SetWindowText,美其名曰,薄薄的封裝。這真是要笑掉大牙了,既然是這樣的薄薄的封裝,那還干脆不如不封裝了,我想破了頭,也看不出這樣的封裝,帶來了什么樣的好處。反而將原本全局函數(shù)的各種靈活性,都給葬送在類成員函數(shù)這個監(jiān)獄中。全局函數(shù)的各種好處,除了是全局這個缺陷之外,實在都是類成員函數(shù)沒法比的。而且,鑒于API中數(shù)量實在太多,于是搞出來的C++對象都是龐然大物,最臭名昭著的,當然要數(shù)CWnd和CDC這對黑風雙煞了,使用起來,極不方便,極難學習。一個類的函數(shù)過多,無論如何,都是失敗的設(shè)計。還有,如果WINDOWS系統(tǒng)新增了什么使用到句柄的函數(shù),這些類也都要相應(yīng)地增加新成員函數(shù),再進一步說,如果用戶自己因為需要,也要開發(fā)使用到句柄的全局函數(shù),要怎么想辦法整成員函數(shù)呢。其實,MFC中的所謂的線程安全,其實也不過是自欺欺人的說法而已,你要想在MFC中多線程的使用窗口對象,即使不是不可能,那也要花費九牛二力氣才能在多線程中共享窗口對象,一切皆只因MFC已經(jīng)很努力地做到了不讓你在多線程下使用窗口對象。

        好了,再進一步考察,在這種思路的指導(dǎo)下,最后MFC被設(shè)計成一個什么樣的框架。一直很懷疑想,MFC的設(shè)計者,是否不是對WINDOWS API的精神了解得不透徹,又或者對C++不是很精通,否則,無論如何,斷斷都不會整出MFC這樣的一個人不象人、鬼不似鬼,精神分裂、做事虎頭蛇尾的鬼東西出來。要不然,我們用MFC開發(fā),就不會覺得束手束腳,很不好施展拳腳,一再感覺一直受制于其可惡的呆板的框架之下,這并不是說框架不好,只是MFC這套框架,實在很不好擴充。這樣也罷了,問題是,MFC在使用上,又很不人性化,你又要陷入各種各樣的細節(jié)之中,什么二段構(gòu)造,有些對象又要自己刪除,有些又不能自己刪除等,更要命的是,MFC的運行效率又臭名昭著。有些同學就會問,貌似在MFC開發(fā),其實也很強大很靈活,殊不知這種強大和靈活,那都是源于C++的強大靈活,也源于WINDOWS系統(tǒng)的強大靈活,源于MFC只對API只作了一層薄薄的封裝,與MFC本身的設(shè)計沒什么太多的關(guān)聯(lián)。當拋開MFC,直接用API和C++來寫代碼,就體會到什么才叫做強大靈活,除了代碼比MFC多一點之外,一切都要比MFC來得清爽,也要來得容易維護。如果,如果設(shè)計做得好,可能總體的代碼量不會比用MFC的多也說不定。

        于是,這么一個偉大的框架,表現(xiàn)出來的,很多地方都C++的精神格格不入。承然,MFC剛開始設(shè)計時,缺乏太多的C++的特性的支持,而不得不另起爐灶。但是,就算沒有C++98中的功能支持,MFC也不該出現(xiàn)以下這么重大的設(shè)計問題。
1、 不需要用到的特性,我們依然要付出種種代價。我們看到CCmdTarget集成了COM的功能,CWnd中對ActiveX的支持,就算我們的代碼不包含一丁點使用到COM的代碼,我們都要背負每個CWnd中將近100個字節(jié)的大小,運行過程中一再要忍受框架代碼中對ActiveX變量的一次又一次地檢查。我們看到,就算不使用文檔視圖結(jié)構(gòu),CMainFrame中都要承受對它的支持代碼,和各個不必要的成員變量。總之,MFC中有很多特性,就算不愿意使用,它們還是在那里,不容許我們忽視。
2、 耦合太厲害。我們看到,CWnd中居然出現(xiàn)了對子類CView和CFrameWnd的引用,CControlBar的成員函數(shù)中有對CToolBar的CAST,然后,CFrameWnd又引用到CControlBar和CView,CControlBar和CView也都用到CFrameWnd的函數(shù),各種各樣好厲害的循環(huán)依賴,這么糟糕的設(shè)計竟然出現(xiàn)在C++的著名的界面框架,不得不令人嘆息不已。這樣的耦合,就是在MFC之中,一個類設(shè)計得再好,也只能在某些特定的場合下使用。好比, CControlBar, CSplitterWnd這兩個好東西只能活在CFrameWnd,CView的環(huán)境下,想在其他的地方使用上就煞不容易了。就算是著名的文檔視圖結(jié)構(gòu),也都是問題很大,如果我的類,想要訂閱文檔中的通知消息,還要求必須派生于CView中,這個限制也太厲害了,于是為了它這個死板的設(shè)計,有多少次,我們必須改變設(shè)計,以適應(yīng)MFC的無理取鬧的要求。
3、 功能太過單薄:MFC僅僅是作為一個界面的基本框架而已,僅僅實現(xiàn)了從句柄到對象的映射,然后,再加上一點點所謂的文檔視圖的MVC模式,必要的多視圖多子窗口的支持,基本的必要的COM支持,對API的薄薄封裝,僅此而已(至于SOCKET、WININET和數(shù)據(jù)庫的MFC類,又有多少可利用的價值)。有多少次,我們想對對話框進行拉伸的操作;有多少次,我們需要用到表格控件;……,但是,這一切,想要MFC提供更加強大的控件,完全都沒有。必須求助于第三方控件公司庫,好比,BCG、XTREME,你們知道,MFC的代碼就算再爛,也還是很有分寸,還能保住最基本的底線,但是,第三方控件的代碼,那真的是,讓人大驚失色,沒有做不到的,只有想不到的。要知道,C++可是很強大的,但是,用它做出來的框架,卻如此的功能之小。
4、 MFC中的類的功能不單一,承載了太多的責任,導(dǎo)致很容易就出現(xiàn)了很多重復(fù)的代碼:好比CCmdTarget中原本只是為了可以處理消息,后來居然還兼具COM的功能。又好比,CList, CMapPtrToPtr里面又都包含了內(nèi)存池的實現(xiàn)代碼,原本這些內(nèi)存池的實現(xiàn)代碼就應(yīng)該剝離出來。
5、 行為錯亂,神經(jīng)分裂,沒有統(tǒng)一的接口,以至于使用起來,極易出錯。很多地方,都努力地去做了,但是都做得不徹底。企圖封裝所有的WINDWOWS的界面的API,但無論如何,都做不到,而且它自己內(nèi)部也都知道沒辦法做到,但它還要努力地去做。
……

        各種各樣的問題,難怪MFC的書那么多,沒有一本可以作為面向?qū)ο蟮牡浞秾W習,即使四大天王,也不過只是沒有那么惡臭而已。原來一切,皆只因為源頭本就臟了。之前還以為,MFC,還能算是一積心堆砌而成垃圾。總體設(shè)計,雖然確實糟糕透頂,但細微上看,還能做到讓人擊節(jié)贊嘆,好比對于線程局部變量的封裝擴展,消息映射表。可是,即使局部代碼的實現(xiàn),也都充滿了重重的缺陷。

        如果說MFC還有些可圈可點之處,VC2008之后引進的BCG的界面補丁,完全就將這些可稍為搬上臺面的東西直接給淹沒掉。BCG的出現(xiàn),對MFC而言,根本就不是狗尾續(xù)貂,而是狗尾之上再綁上一只蠢笨無比的大豬。直接就將MFC推入萬劫不復(fù)之地。

        MFC,OH SHIT,你可以去死了!

        突然驚覺,C++的類庫框架,無不充滿了各種各樣的缺陷,除了STL還差強人意之外(其實也問題多多),沒有一個能夠讓人看著滿意,用著放心。于是,我要投入LISP和C的懷抱之中了,不,一定要頂住,C++是我的最愛。

posted on 2012-05-30 14:15 華夏之火 閱讀(19924) 評論(47)  編輯 收藏 引用

評論

# re: MFC,一開始就錯了 2012-05-30 14:56 空明流轉(zhuǎn)

MFC挺好啊,C++沒有自省和動態(tài)機制,GUI再怎么設(shè)計都是一團糟。  回復(fù)  更多評論   

# re: MFC,一開始就錯了 2012-05-30 15:10 漂漂

樓主,改wtl吧  回復(fù)  更多評論   

# re: MFC,一開始就錯了 2012-05-30 15:18 華夏之火

@空明流轉(zhuǎn)
自省和動態(tài)機制確實是界面框架的利器,但是,用C設(shè)計界面,簡簡單單,卻似乎從來都不存在這些問題。功能更豐富更強悍的C++, 起碼也要實現(xiàn)C能做到的一切事情,并且,最后的效果,絕不能比C遜色。但可惜MFC,明顯做不到  回復(fù)  更多評論   

# re: MFC,一開始就錯了 2012-05-30 15:19 華夏之火

WTL也不了多少,不過是效率上去了而已,靈活性還是沒有原始的C那么好@漂漂
  回復(fù)  更多評論   

# re: MFC,一開始就錯了 2012-05-30 15:31 MFC徹底

一樣啊!!!!都遭比爾傷慘了!  回復(fù)  更多評論   

# re: MFC,一開始就錯了 2012-05-30 15:45 地里的

樓主可以嘗試下Qt,我在Qt之前也是用的MFC。我個人感覺Qt設(shè)計的非常好!  回復(fù)  更多評論   

# re: MFC,一開始就錯了 2012-05-30 15:51 空明流轉(zhuǎn)

@華夏之火
C啊,我是不懂C哪里簡單了。。。話說Framework本來就是限定性的。。。  回復(fù)  更多評論   

# re: MFC,一開始就錯了[未登錄] 2012-05-30 16:01 路人甲

非行班出生,連c++都沒有系統(tǒng)的學過,只是用Qt、python分別寫過小軟件,對強耦合也是比較不爽的,這段時間在嘗試go和lisp。特別是lisp,貌似這種去耦更適合分布式計算,最近很火的Mapreduce就是這樣  回復(fù)  更多評論   

# re: MFC,一開始就錯了 2012-05-30 16:20 2

1.推薦WTL
2.其次QT

WTL開源,你可以自己看著辦。但很多工作還是得自己做。

QT也不錯,用過,用起來挺爽的感覺。

  回復(fù)  更多評論   

# re: MFC,一開始就錯了 2012-05-30 16:24 華夏之火

不好意思,說錯了,C的簡單是指語言層面,于是,用它設(shè)計做出來的東西,非常實在,不會讓你疑神疑鬼。框架確實有局限,但MFC也管得太嚴了,除非對MFC太過精通,否則難以除破它的種種限制@空明流轉(zhuǎn)
  回復(fù)  更多評論   

# re: MFC,一開始就錯了 2012-05-30 16:26 華夏之火

QT自己搞了一套標準,還要先重新編譯過,不喜歡。并且動輒十幾M的庫庫,更加不喜歡。@地里的
  回復(fù)  更多評論   

# re: MFC,一開始就錯了 2012-05-30 16:28 華夏之火

QT確實用著要比MFC爽,但我過去一直就喜歡MFC的復(fù)雜@2
  回復(fù)  更多評論   

# re: MFC,一開始就錯了 2012-05-30 16:29 華夏之火

羨慕,沒有用過MFC,沒有經(jīng)歷過C++的細節(jié)糾纏折磨,幸福啊@路人甲
  回復(fù)  更多評論   

# re: MFC,一開始就錯了 2012-05-30 16:43 地里的

呃……Qt官方有編譯過的庫。
并且你如果自己編譯的話,可以使用靜態(tài)庫啊。
那樓主現(xiàn)在在Windows下做界面開發(fā)用啥玩意兒?  回復(fù)  更多評論   

# re: MFC,一開始就錯了 2012-05-30 16:52 華夏之火

@地里的
很無奈,還在用MFC,公司要求,益發(fā)令人難受  回復(fù)  更多評論   

# re: MFC,一開始就錯了 2012-05-30 18:14 Richard Wei

哈哈,恭喜,博主終于醒悟了  回復(fù)  更多評論   

# re: MFC,一開始就錯了 2012-05-30 19:22 bigbug

您媽,MFC shit,C++難?吃屎容易  回復(fù)  更多評論   

# re: MFC,一開始就錯了 2012-05-30 19:54 鐘謝偉

那么久的MFC歷程,如果要讓你靜下心來,寫一篇贊揚MFC的文章的話,會怎么樣呢,很期待。怎么說事情都是有兩面性的,并且它在市場上流行了那么多的年頭。其實本人沒咋接觸過MFC,在選擇gui設(shè)計的時候,最初選擇的是直接調(diào)用api,后來選擇的是wxwedget(入門)的。時代總是在變,庫也應(yīng)該是與時俱進的,不過它還有適合使用的地方吧。
一個不熟悉MFC的人辯證的看法。  回復(fù)  更多評論   

# re: MFC,一開始就錯了 2012-05-30 20:33 墨魂

當初學C++的時候,最后一次老師說如果沒學MFC,那C++就算白學了。當初我沒有懷疑這句話,然后就去學了。看了一個月的MFC,第一個例子我怎么也弄不明白。感謝我的偏執(zhí),能徹底摒棄WINDOWS的一切。在LINUX上,學QT,一個月,我差不多能熟練運用。這世界上有天才,就有天生優(yōu)秀的設(shè)計。更何況在開源世界里,是無數(shù)的天才。  回復(fù)  更多評論   

# re: MFC,一開始就錯了 2012-05-30 21:55 遠行

我mfc也用了很久,除了大一的c語言課程設(shè)計,以后基本所有的實驗,課程設(shè)計,項目全部是mfc做的界面。mfc應(yīng)該算用得比較熟悉了,四大名著也看了2本左右,不過看了之后還是忘了。感覺真心學設(shè)計還是先用吧,要不然即使看了設(shè)計還是會忘記的。mfc確實不怎么好用,甚至比算法還難用。我學算法也比較多,至少熟悉的算法我不用查文檔能寫出來,但是用了這么久的mfc,如果沒有g(shù)oogle和csdn,我很多程序的功能根本做不出來,只是翻msdn連地方都很難找。至于看書的數(shù)目的話,我也不會少,我翻書速度很快,關(guān)于mfc的書看過至少不下8本,如lz所說,看那些書,要么就是浪費時間,要么就是看不懂還是浪費時間,很多mfc的書都是shit,除了四大名著。
也不要說我c++和Windows編程的知識很爛,大一暑假就啃完c++primer了,大二第一學期看的Windows程序設(shè)計,幾年下來,msdn,csdn之類的都翻了不知道多少次了。。。mfc的代碼也真的不少了,如果mfc真的好用的話,我至少不應(yīng)該這么依靠google強悍的搜索能力。而且,到最后基本找到的出處是csdn和別人的博客。。。
界面這個東西本來就扯淡,但是個人認為在Windows做界面,還是了解Windows程序設(shè)計的基本原理最重要,用不用mfc倒是其次。用mfc學設(shè)計應(yīng)該
還不錯,真心希望多一些偉大好用的界面庫給大家用,誰都不想麻煩。。。  回復(fù)  更多評論   

# re: MFC,一開始就錯了 2012-05-31 01:39 華夏之火

要我說MFC的好話,還真不容易呢。但好話,基本上四大天王已經(jīng)說盡了,你要是感興趣,可以看看@鐘謝偉
  回復(fù)  更多評論   

# re: MFC,一開始就錯了 2012-05-31 01:42 華夏之火

閣下很明智。嘿,你們的老師,那真是,不過大學里的老師,基本上都是這樣@墨魂
  回復(fù)  更多評論   

# re: MFC,一開始就錯了 2012-05-31 01:47 華夏之火

有道理。我們?yōu)槭裁匆獙FC如此責備求全,實在是因為如果不精通MFC,就沒辦法做出似模似樣的東西,但當你一次又一次深入地學習MFC的源碼之后,就會對它很失望。一個框架,如果要求用戶必須精通它,才能用得好,那真的是很失敗@遠行
  回復(fù)  更多評論   

# re: MFC,一開始就錯了 2012-05-31 15:01 codejie

想想咱不用MFC多少年了。。。wxWidget也是個選擇。。。  回復(fù)  更多評論   

# re: MFC,一開始就錯了[未登錄] 2012-06-02 01:40

mfc1.0在92年發(fā)布,別說C++標準了,連dynamic_cast、異常都沒有。
在那么惡劣的情況下搞出20年結(jié)構(gòu)都沒啥變化的類庫,可見設(shè)計者多么nb。
對于耦合度,基本上在那個框架上開發(fā)都得遵守框架上的要求,繼承某些類,耦合某些類。  回復(fù)  更多評論   

# re: MFC,一開始就錯了 2012-06-02 02:08 華夏之火

可是,我要說的是,即使沒有異常、dynamic_cast、type_info、template,甚至連虛函數(shù)都沒有,都可以寫出比MFC更好的框架@壞
  回復(fù)  更多評論   

# re: MFC,一開始就錯了[未登錄] 2012-06-03 01:02

@華夏之火
啥框架?  回復(fù)  更多評論   

# re: MFC,一開始就錯了 2012-06-04 15:42 zjh

GTK+  回復(fù)  更多評論   

# re: MFC,一開始就錯了 2013-02-25 02:42 FrankWei

特喜歡這文章,每每戳中笑點,嘎嘎~  回復(fù)  更多評論   

# re: MFC,一開始就錯了 2013-06-17 15:23 panovr

挺好的文章。本來只是使用MFC,卻經(jīng)常需要去看MFC的源代碼。  回復(fù)  更多評論   

# re: MFC,一開始就錯了 2013-06-18 11:09 panovr

為什么這樣說:“而VC2008中BCG的出現(xiàn)之后,VC2010還依然保留著那些蠢笨無比的BCG文件,不思悔改,終于讓某徹底對MFC死心了,這貨沒得救了。”?  回復(fù)  更多評論   

# re: MFC,一開始就錯了 2013-11-04 19:52 紅色代碼

文中的大俠指的是云風吧?MFC我也用了至少4年,接觸了WTL之后,就再也不想碰MFC了.太臃腫了,不過里面的好多東西 還是值得學習的.雖然浪費了不少的時間,但是不后悔  回復(fù)  更多評論   

# re: MFC,一開始就錯了[未登錄] 2013-11-08 16:23 Aaron

非常欣賞!  回復(fù)  更多評論   

# re: MFC,一開始就錯了 2013-11-22 10:05 SuperCPlusPlusSystemAna

C++,MFC依然是頂級開發(fā)人員的王者工具;一個C++老兵如是的說....  回復(fù)  更多評論   

# re: MFC,一開始就錯了 2013-11-22 10:12 SuperCPlusPlusSystemAna

來北京10年了,多少同事飛灰煙面,我依然能夠感受到公司對C++核心開發(fā)人員的仰慕和尊重,那是發(fā)自肺腑的對王者程序員的尊重, 原因很簡單,MFC也依然是程序開發(fā)領(lǐng)域中,多少后來者不可逾越的領(lǐng)域,千萬不要夜郎自大,那是因為你的水平依然還不夠.  回復(fù)  更多評論   

# re: MFC,一開始就錯了 2014-02-21 22:30 Mr A

任何讓用戶不專注于事物本身,而要去專注于工具本身的東西都是流氓  回復(fù)  更多評論   

# re: MFC,一開始就錯了[未登錄] 2014-02-27 11:45 Steven

說的非常在理,很贊!  回復(fù)  更多評論   

# re: MFC,一開始就錯了 2014-03-05 15:20 噴傻缺

@鐘謝偉
呵呵,與時俱進?
看看已經(jīng)是半個世紀的C、C++,人家玩了10多年了依然活得有滋有味,而那些所謂的高級語言呢?一兩年就換框架就得從頭學習,這叫與時俱進?傻缺還差不多。
傻缺到養(yǎng)活那些所謂的高級IDE公司被賣了還幫人家數(shù)錢。
10年的C++經(jīng)驗累計足以精通,10年VS幾度更改幾度學習,精通你妹,10年后你還是唯有不停的買不停的學。傻缺!!!還與時俱進!!!!  回復(fù)  更多評論   

# re: MFC,一開始就錯了[未登錄] 2014-03-23 14:54 菜鳥

沒有樓主說的那么糟糕吧。取你需要的開發(fā),又沒有讓你把MFC都玩一遍;如果你從中獲得了你需要的,管他MFC,QT什么的,又有多大差別呢?  回復(fù)  更多評論   

# re: MFC,一開始就錯了 2014-04-19 23:51 聞德鵬

愛越深,恨越深么
哎~~~  回復(fù)  更多評論   

# re: MFC,一開始就錯了 2014-12-17 17:26 路過

從仰望到批判是境界的提升,單看MFC孵化出了多少能夠批判她的猿,貢獻還是蠻大的。  回復(fù)  更多評論   

# re: MFC,一開始就錯了[未登錄] 2015-05-25 10:53 小龍

傻x,這么偉大著作起始二等小輩隨便亂叫的  回復(fù)  更多評論   

# re: MFC,一開始就錯了 2016-03-14 15:26 potato

看過programming windows with mfc 2ed, window programming 5th 嗎? 有沒有擴展過mfc 的默認控件 , 如果沒有, 只會抄代碼, 那你只有剛?cè)腴T, 你說的BGC是什么寫的 , 看看源代碼就知道, 雖然mfc 編寫代碼要較長時間, 但這個提供了最基本的工具, 你可以創(chuàng)造啊, 總之一句話, 你嫌mfc 麻煩, 要花好長時間學習, 拿別人做好的, 很爽。  回復(fù)  更多評論   

# re: MFC,一開始就錯了 2016-05-03 14:38 intel

樓主沒用過 ultimate MFC win31  回復(fù)  更多評論   

# re: MFC,一開始就錯了 2016-05-10 08:19 呵呵

MFC就是垃圾,要不是微軟力推早完蛋了,一堆爛宏堆積代碼,沒法維護。QT貌似是個不錯的選擇。WTL太小眾,wxWidget用的也太少,商業(yè)用啊,人得吃飯啊。GTK+那代碼沒法看,我覺得C就不適合做界面。所以還是QT吧,無論PC還是嵌入式,尤其嵌入式。  回復(fù)  更多評論   

# re: MFC,一開始就錯了 2016-05-10 09:55 華夏之火

@呵呵
以90年代的標準來看,mfc還是很不錯的。那個時候沒有template,沒有exception,業(yè)界對于面向?qū)ο蟮乃伎家矝]那么深刻。以那時的標準c++,沒有編譯器擴展,mfc真是相當不錯  回復(fù)  更多評論   

# re: MFC,一開始就錯了 2016-07-19 15:55 rita

QT挺不錯的,消息機制很靈活,封裝的也比較好,讓人感覺自己確實是使用框架而不是跟框架內(nèi)部較勁
大學學c++以后要求我們自學界面庫做大程,別人幾乎都選的mfc,就我選的QT,那學習效率真的沒得說,后來又再自學mfc,感覺自己從現(xiàn)代社會進入了原始社會【。  回復(fù)  更多評論   


只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


導(dǎo)航

統(tǒng)計

常用鏈接

留言簿(6)

隨筆分類

隨筆檔案

搜索

積分與排名

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲午夜在线视频| 欧美电影电视剧在线观看| 欧美精品久久99| 亚洲美女91| 亚洲精品韩国| 久久久久久9999| 亚洲丰满在线| 91久久精品国产91性色tv| 欧美色中文字幕| 小嫩嫩精品导航| 午夜精品视频在线| 一区二区三区我不卡| 亚洲福利视频三区| 欧美日韩一区国产| 久久精品人人做人人爽| 久久久久久夜精品精品免费| 亚洲日本久久| 亚洲一区影音先锋| 在线观看欧美日本| 99re热精品| 黄色欧美成人| 一区二区欧美在线| 狠狠色伊人亚洲综合网站色| 亚洲破处大片| 国产亚洲视频在线| 亚洲国产乱码最新视频| 国产精品入口66mio| 欧美成人激情视频免费观看| 欧美日韩国产综合视频在线观看| 久久久97精品| 欧美日韩精品中文字幕| 女仆av观看一区| 国产精品久久久久久久久动漫| 蜜桃av噜噜一区| 国产精品入口| 亚洲日本中文字幕免费在线不卡| 国产欧美欧洲在线观看| 91久久国产自产拍夜夜嗨| 国产偷国产偷亚洲高清97cao| 最新日韩在线视频| 国内久久精品| 亚洲一区二区视频| 99视频+国产日韩欧美| 久久精选视频| 久久久91精品国产一区二区三区| 欧美日韩直播| 亚洲肉体裸体xxxx137| 在线日本成人| 久久国产综合精品| 久久成人免费电影| 国产精品美女一区二区| 日韩午夜在线观看视频| 亚洲免费成人av电影| 免费观看欧美在线视频的网站| 久久电影一区| 欧美午夜女人视频在线| 日韩视频免费观看高清在线视频 | 欧美午夜精品伦理| 亚洲国产欧美一区| 亚洲国产第一页| 久久天天躁夜夜躁狠狠躁2022 | 久久免费视频一区| 国产精品嫩草影院一区二区| 亚洲最黄网站| 亚洲尤物精选| 国产精品国产精品| 在线一区二区三区四区| 亚洲一区美女视频在线观看免费| 欧美精品九九| 亚洲视频网在线直播| 亚洲综合三区| 国产欧美日韩在线观看| 欧美一区二区成人| 久热这里只精品99re8久| 国产综合第一页| 久久尤物视频| 亚洲高清激情| 中文网丁香综合网| 国产精品人人做人人爽人人添| 亚洲私拍自拍| 久久久中精品2020中文| 伊人久久综合| 欧美激情一区二区三级高清视频| 91久久国产综合久久91精品网站 | 国产精品一区二区欧美| 午夜精品在线| 欧美成人69av| 这里只有精品视频在线| 国产精品老牛| 久久久夜夜夜| 日韩视频亚洲视频| 久久成人18免费观看| 亚洲第一中文字幕在线观看| 欧美精品成人91久久久久久久| 国产精品99久久久久久www| 欧美一站二站| 亚洲精品乱码久久久久久蜜桃麻豆| 欧美人成免费网站| 亚洲欧美中文在线视频| 欧美激情亚洲| 欧美一区二区私人影院日本| 亚洲国产精品久久人人爱蜜臀 | 久久久久国产精品一区三寸| 亚洲激情成人| 久久久久青草大香线综合精品| 亚洲欧洲精品一区二区| 国产精品夜夜夜| 免费观看在线综合| 亚洲欧美日韩国产一区| 亚洲高清不卡在线| 久久久久综合一区二区三区| 一区二区三区日韩欧美| 在线成人免费观看| 国产精品久久国产愉拍| 免费亚洲视频| 久久福利一区| 亚洲欧美成人网| 亚洲精品一区二区在线| 欧美a级在线| 久久久久久香蕉网| 亚洲欧美日韩精品久久| 亚洲经典视频在线观看| 欧美日韩国产欧美日美国产精品| 蜜桃精品一区二区三区| 亚洲永久免费av| 亚洲国产欧美一区二区三区久久| 国产目拍亚洲精品99久久精品 | 欧美一级大片在线观看| aaa亚洲精品一二三区| 亚洲第一精品夜夜躁人人爽| 麻豆91精品91久久久的内涵| 欧美一区二区精美| 亚洲欧美在线免费| 99国产精品久久久久久久久久| 1000部精品久久久久久久久| 国内精品美女av在线播放| 国产精品你懂得| 国产伦精品一区二区三区| 欧美日韩一区在线视频| 欧美日韩mv| 欧美日韩一区二区三区视频| 欧美精品一卡二卡| 欧美日本国产一区| 欧美日韩国产精品一卡| 欧美日韩国产一中文字不卡| 欧美日韩三级电影在线| 欧美日韩视频在线一区二区| 欧美日韩精品高清| 欧美午夜欧美| 国产日本欧美一区二区三区| 国产亚洲欧洲一区高清在线观看| 国产一区二区丝袜高跟鞋图片| 国产一区久久| 亚洲第一精品久久忘忧草社区| 亚洲第一黄网| 亚洲日本激情| 亚洲欧美激情诱惑| 欧美中文在线观看| 蜜臀久久99精品久久久久久9| 欧美刺激性大交免费视频| 亚洲高清不卡在线| 亚洲视频一区二区| 欧美一区二区在线观看| 麻豆av一区二区三区久久| 欧美大片在线看| 国产精品久久久久久久久免费 | 亚洲一区二区不卡免费| 亚洲私人影院在线观看| 欧美一区二区在线观看| 欧美不卡视频一区发布| 99精品99久久久久久宅男| 亚洲免费在线精品一区| 久久在线精品| 欧美色图五月天| 伊人成综合网伊人222| 日韩午夜中文字幕| 欧美在线|欧美| 亚洲国产成人av好男人在线观看| 一本久久a久久精品亚洲| 欧美在线视频a| 欧美区一区二区三区| 国产丝袜一区二区| 99国产精品一区| 久久精品一二三区| 亚洲免费黄色| 久久人人爽人人爽爽久久| 欧美性猛交视频| 亚洲国产精品第一区二区| 午夜宅男欧美| 亚洲人成在线影院| 先锋影音网一区二区| 欧美日韩成人在线视频| 国产一区日韩欧美| 亚洲一区二区三区乱码aⅴ蜜桃女| 久久久久久免费| 亚洲欧美在线高清| 欧美日韩午夜精品| 亚洲人成在线观看一区二区| 久久久www成人免费精品| 在线一区二区三区四区五区|