查看完整版本: 請問現在學 MFC 值得嗎?
頁: [1] 2

rrtyyy 發表於 2017-9-16 10:49 PM

請問現在學 MFC 值得嗎?

本帖最後由 rrtyyy 於 2017-9-16 10:50 PM 編輯

年輕時曾在書局首次見著 MFC 的書,當時其實看不懂,所以翻一翻就又放回書架了。
(多年後的今天,那本書在網拍上已賣到近 $2000 了)
現在回想起來才知道它用的其實是 Windows 的基礎,而我對於核心的基本知識又特別感興趣。

現在電腦已安裝了 VC++ 2012(當然我也老了),但現在書局已看不到 MFC 的書了(深怕已被淘汰),若以程式逆向而言的話是否該學 MFC? 不知為什麼,我總覺得組合語言有一種美感,美麗又無遮蔽。


...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><div></div>

o_g349 發表於 2017-9-16 11:41 PM

如果你很喜歡底層,那就學吧,不過學 WinAPI 不是更直接嗎? MFC 短期內還不會死,但是如果你在意過不過時的話可以學 .Net 或者是 Qt

rrtyyy 發表於 2017-9-17 12:21 AM

請問 WinAPI 跟 MFC 不是都一樣嗎?

o_g349 發表於 2017-9-17 09:21 AM

rrtyyy 發表於 2017-9-17 12:21 AM static/image/common/back.gif
請問 WinAPI 跟 MFC 不是都一樣嗎?

不一樣,WinAPI 是最底層的函數,而 MFC 是基於 Windows API 的簡單封裝,MFC 可以調用 WinAPI,而 WinAPI 不能調用 MFC

superjoeliao 發表於 2017-9-17 08:56 PM

我個人的愚見是如果學會MFC 那麼日後學什麼語言都會很輕鬆

但是MFC的門檻相當高,如果不很熟練C/C++/QT/BCB 直接就看MFC 一定是會完全看不懂的

以下是我個人的經驗分享<br><br><br><br><br><div></div>

Jeepluo 發表於 2017-9-21 04:11 PM

通學什麼都是看需求,如果沒有需求學了也一點都沒有用。

mdlin 發表於 2017-9-24 11:02 AM

了解MFC當然有助於逆向工程,不過現在很多PC程式都架構在.NET frame work ,  所以...............{:38:}

idkfa0 發表於 2017-10-1 06:33 PM

MFC頗有難度,學了挫折感很重,建議是學其他

mingjau 發表於 2017-10-10 10:47 PM

其實mfc並不是有難度,而是要多買一些書,如果只買一本,很容易就
會發現"明明我都照著打,為什麼會跑不出來",然後拿另一本書來看,
就知道為什麼了

coal511464 發表於 2017-10-14 02:50 PM

看你之後想朝哪方面走 不一定每間公司都會用到MFC<br><br><br><br><br><div></div>

rrtyyy 發表於 2017-10-14 11:39 PM

coal511464 發表於 2017-10-14 02:50 PM static/image/common/back.gif
看你之後想朝哪方面走 不一定每間公司都會用到MFC

我老了,我只是興趣而己,
但...問題就出在這裡,不像年輕時有工作需求。

brucet 發表於 2017-11-3 10:08 AM

UI越來越豐富的時代,MFC好像更難生存了{:35:}{:35:}

weema 發表於 2017-11-10 02:56 AM

我從 VC6 寫 MFC,然後 VS2003,VS2005,VS2008,VC2010,VS2012,VS2013,VS2105,到現在的 VS2017,算是骨灰級了,容我說說我的看法




如果你是從零,要踏入軟體設計,而且不會走韌體的路,只是想混口飯吃,我不建議你學 MFC,往 C# 其他語言走吧,再來往下說說大家都在討論解釋的 MFC 缺點




C/C++ 退流行了

這句話常聽到,別忘了 Linux,iOS 都是用 C/C++ 寫軟體的,就算是都換成其他語言了,那韌體呢 ?,Keil C 8051 ARM 呢 ?,我學 C/C++,因為我知道,在我退休之前,他們都會存在,我從不買一些書,列如,快快樂樂學程式設計,輕輕鬆鬆學 C#,如果有這種事情,我只想買,快快樂樂輕輕鬆鬆賺大錢,你學的必須要能夠跟別人競爭,而且足以養活你到退休




MFC 很難學

我的想法,假如一樣語言,你學三的月,就可以有口飯吃,意味的別人也一樣,也就是說你很容易被取代,如果你想這輩子靠寫程式過活,找一種語言,可以讓你到 60 歲退休都還有飯吃的語言吧




MFC 的訊息機制,很難學,很容易搞混掉,常常弄到瘋掉,QT 等等多優美

別忘了,你是寫 Windows 程式,Windows 本身底層就是訊息傳遞的機制,優美只是把它隱藏,但並不表示他不存在,而你本身寫 Windows 程式卻不知道什麼是訊息傳遞,我不知道該說什麼




MFC 做介面很耗時,連資料庫也不及其他語言方便

如果你會這樣說,我會回答你,現在還在用 MFC 寫程式的人,跟你是站在不同一條線上,我們會自己封裝類別,SQL/Button/ListCtrl/Socket/Serial/Bitamp 等等,不要說比其他語言快,至少時間速度不會慢




MFC 類別,已經很臃腫了,雜亂而難用

從 Windows 95 VC6 已經幾年了,22 年了,這麼多年 Windows 增加了多少功能,怎麼期望他不變大呢 ? 類別增加,我還是只用那幾十個,其他與我何干,就像是說你背了三千個英文單字,你就可以對話如流了,說句實話,自己寫的 VC6 類別庫,到現在 VS2017 我還在用,編譯馬上過,完全沒有壓力



QT 可以跨平台,MFC 不能

我寫了 XX 多年的程式,還沒遇到需要跨平台的,倒是用過 Allegro - A game programming library,寫過 Windows/Linux 跨平台的軟體,不過只是自己玩玩,如果寫一隻 Windows 軟體,可以同時在 Linux 上執行,而你完全不需要了解知道 Linux 的系統,真的穩定 ? 真的可以賣錢 ?




很多公司都不用 MFC 了

我要是老闆,也不要你用 MFC,當然希望你學個三個月就能給我上戰場了,你陣亡了,你走了,我無所謂,隨便找都是人,抓個人學三個月,就可以補你,何苦培養你那麼多年,我只希望你寫程式像是在鎖螺絲,你離開了,沒有自己的核心,自己的類別庫,什麼都帶不走




C# .NET 最新語言,微軟力推

我有位朋友寫 .NET 的,他的電腦從 .NET FrameWork 1.0 ~ 4.61 都裝,因為三年前寫的要用 2.0,兩年前寫的要裝 3.0,客戶安裝軟體,就要注意它是那一版的 .NET FrameWork,然後還要注意那些版本會相衝,優點是只要客戶重新安裝或是更新系統,就要找他去,就有出差費,而我 VC6 寫的程式人家 Windows 10 還在用,沒出差賺錢的機會




說那麼多,寫那麼多年的程式,心理的感觸就是,我是在玩技術,不是在被技術玩,我知道我只要把 MFC 寫好,任何軟體功能,我只是拷貝之前的類別來用,任何新的功能都是在增建我的私人庫,8051/ARM Keil C,嵌入式系統等等,我學 C/C++ 到現在,足夠我輕輕鬆鬆寫程式,輕輕鬆鬆養家,然後正正常常下班,因為所有的工作,都只是
拷貝之前累積的私人庫,專案時程規定三個月,先混兩個月,然後一個月輕鬆搞定,我很難想像,這年紀了,假如我還有學不完的技術,追著微軟跑,我還能活多久.........
...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

superjoeliao 發表於 2017-12-2 03:22 PM

我最近在工作時,廠商提供指紋抓取範例剛好是MFC

我個人認為,學會沒什麼不好,畢竟微軟還沒淘汰他,想必就是又存在的價值

x1c 發表於 2017-12-9 02:35 AM

weema 發表於 2017-11-10 02:56 AM static/image/common/back.gif
我從 VC6 寫 MFC,然後 VS2003,VS2005,VS2008,VC2010,VS2012,VS2013,VS2105,到現在的 VS2017,算是骨 ...

同感,只要真的懂,VC6一直用是不會被淘汰的,
只是要分清楚是在刻介面多還是寫功能強,
只要VC6寫好 VS2003~2017全部直接可以用!
而核心程式碼跨平台也是都能直接用...管他Unix/Linux/WinCE全部通用,
以Windows為例,一個exe從98/XP到Win10全都可以跑,
不用像.Net/Java號稱跨平台,最後其實都在搞作業環境的問題
...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><br><br><br><br><br><div></div>
頁: [1] 2