十年
MFC
經(jīng)歷認(rèn)識(shí)的
Microsoft
技術(shù)
孫輝
?
?
自從
2005
年
3
月
8
日下午
16
時(shí)
“十年
MFC
經(jīng)歷認(rèn)識(shí)的
Microsoft
技術(shù)”以帖子的方式發(fā)表于
CSDN
論壇后,引起了許多網(wǎng)友得好評(píng),使得筆者誠(chéng)惶誠(chéng)恐,考慮到該貼過(guò)長(zhǎng)
(
人氣指數(shù)為
5000)
,因此轉(zhuǎn)移到
Blog
上,許多網(wǎng)友對(duì)此帖的評(píng)語(yǔ)只好省略,在此鄙人謝過(guò)了!為感謝網(wǎng)友的支持,本人希望今后能發(fā)出新的帖子以回報(bào)網(wǎng)友對(duì)我的鼓勵(lì),再一次謝謝!
初識(shí)
MFC
?
? ? ? ?
我最初知道
MFC
大概是在
1993
年,那個(gè)時(shí)候
Visual ?C++
還沒(méi)面世,當(dāng)時(shí)
Microsoft
的
C++
編譯器還很弱,官方的名字是
Microsoft ?C/C++ ?7.0
,
MFC
的版本是
1.0
,幾乎沒(méi)有引起什么反響,那個(gè)時(shí)期最好的
C++
開(kāi)發(fā)環(huán)境是
Borland ?C++ ?3.1
,其實(shí),大概是
1992
年
11
月份,一個(gè)偶然的機(jī)會(huì),我領(lǐng)略到
Borland
公司的厲害,記不得在什么地方,我看到一個(gè)絕妙的集成開(kāi)發(fā)環(huán)境,即
Turbo ?C++ ?3.0 ?for ?Windows
,這是我記憶中第一個(gè)真正的
Windows
環(huán)境下的
C++
集成開(kāi)發(fā)環(huán)境,那種激動(dòng)的感覺(jué)至今仍記憶猶新,不客氣的說(shuō),當(dāng)時(shí)至少在
C++
方面,
Microsoft
與
Borland
不是一個(gè)水平的,
Borland
明顯的要高于
Microsoft ?
,
Borland
的產(chǎn)品在技術(shù)上給我留下深刻的印象。那個(gè)時(shí)候
Microsoft
最好的開(kāi)發(fā)平臺(tái)是
Visual ?Basic ?3.0
,而
Borland
的
Delphi
正處于開(kāi)發(fā)階段(
Delphi ?
的代碼名稱(chēng)是:
“VB ?Killer”
)
……
,想起這些十幾年前的往事,我不禁感慨萬(wàn)千。
?
十幾年來(lái),我用過(guò)許多開(kāi)發(fā)環(huán)境,關(guān)于
Visual ?Basic
,我用過(guò)最早的
DOS
版本,
Windows
版的
Visual ?Basic
我基本上全都用過(guò),至今我還記得每個(gè)版本的
VB
安裝盤(pán)磁盤(pán)的盤(pán)數(shù)。同樣,我用過(guò)各個(gè)版本的
Delphi
,特別是
Delphi ?2.0
,給我留下極好的印象。
Delphi
提供真正編譯的可視化開(kāi)發(fā)環(huán)境,那個(gè)時(shí)候(
1994
年左右),
Delphi
就可以開(kāi)發(fā)帶有
GUI
的動(dòng)態(tài)鏈接庫(kù),你可以想象,在
Microsoft ?Access ?2.0
的應(yīng)用程序中可以加載一個(gè)
Delphi ?Form
并進(jìn)行程序交互,那種感覺(jué)真是棒極了。
?
??? Borland ?C++
是我心中無(wú)法抹掉的遺憾,從
Turbo ?C
到
C++ ?Builder
,我深刻的體驗(yàn)到
Borland
的輝煌和無(wú)奈,
Delphi
從
VB ?Killer
走到為
VB
護(hù)航(你可以想象
Delphi
一步到位的
ActiveX ?
控件開(kāi)發(fā)技術(shù)有多牛,早期的
VB
有多土,早期的
VB
不能開(kāi)發(fā)動(dòng)態(tài)鏈接庫(kù),因此無(wú)法開(kāi)發(fā)
ActiveX ?
控件,想起來(lái)真令人噓唏不已),
Borland ?C++
的命運(yùn)也是不濟(jì)。
Borland ?C++ ?3.1
的輝煌永遠(yuǎn)不再了,十幾年的開(kāi)發(fā)工作中,我在
C++
上投入了大量的精力,
Borland ?C++
曾經(jīng)給我?guī)?lái)無(wú)數(shù)的激動(dòng),然而這個(gè)經(jīng)典的名字卻在與
Microsoft
的競(jìng)爭(zhēng)中漸漸的流逝了
……
。
?
MFC4.0
的出現(xiàn),使得人們感覺(jué)
Microsoft
在
C++
方面趕上來(lái)了,這一版的
MFC
是
Win95
推出后出現(xiàn)在
Visual ?C++ ?4
中(
Microsoft
沒(méi)有
VC ?3
,
VC4
以前的版本是
2.2
、
2.1
、
2.0
、
1.51
、
1.5
、
1.0
)。也許是對(duì)
Borland ?C++
的潛意識(shí)的失望,我不知不覺(jué)的接受了
MFC
,
VC ?4.2
推出時(shí),我通過(guò)正常渠道購(gòu)買(mǎi)了這個(gè)編譯器的企業(yè)版。
?
關(guān)于
Microsoft
?
? ? ? ?
關(guān)于
Microsoft
,有無(wú)數(shù)的人要對(duì)這個(gè)名字?jǐn)⒄f(shuō)感覺(jué),這個(gè)令人討厭的名字!不知道是喜歡還是憎惡,你是程序員,你的心思可能就要因
Microsoft
的存在而動(dòng),即使你用
Linux
,你可能也是因?yàn)?/span>
Microsoft
技術(shù)因素。多少年來(lái),這個(gè)名字每天都出現(xiàn)在你、我、他的面前,因?yàn)槟悴坏貌幻鎸?duì)
Windows
的存在,可是你憎恨這個(gè)名字嗎?你討厭這個(gè)名字嗎?我不知道是否已經(jīng)對(duì)這個(gè)名字麻木了。
1998
年我個(gè)人訂了
Microsoft ?MSDN ?Universal ?
版,我開(kāi)始比較全面接觸這個(gè)公司的開(kāi)發(fā)技術(shù),你可以想象,
1998
年當(dāng)你面對(duì)上百?gòu)埣夹g(shù)光盤(pán)的時(shí)候,你就知道什么叫做
“
厚度
”
,當(dāng)我們有時(shí)說(shuō)出
“
趕上
”
或
?“
達(dá)到
”Microsoft
某些產(chǎn)品的水平的時(shí)候,可能我們?nèi)狈?duì)這個(gè)公司
“
厚度
”
的真實(shí)了解。進(jìn)入
MSDN
,我感覺(jué)
Microsoft
簡(jiǎn)直不是一個(gè)
“
公司
”
,而是(或者正在形成)一個(gè)
“
社會(huì)
”
。當(dāng)時(shí)著名的技術(shù)網(wǎng)站
http://www.codeguru.com
全部的技術(shù)資料是可下載的(那個(gè)時(shí)候
http://www.codeguru.com
提供整個(gè)網(wǎng)站內(nèi)容下載服務(wù),大約
3M
左右),大名鼎鼎的
www.codeproject.com
還不存在。一開(kāi)始,我始終潛意識(shí)在技術(shù)上對(duì)比
Microsoft
與
Borland
,應(yīng)當(dāng)說(shuō)技術(shù)上
Borland
不比
Microsoft
弱,即使現(xiàn)在也有人持有這個(gè)看法,可是為什么
Borland
走到今天這個(gè)地步?而
Microsoft
卻如日中天?若干年前,這兩個(gè)公司競(jìng)爭(zhēng)何等激烈,而現(xiàn)在卻是另一番
“
合作
”
的景象?可能很多人想過(guò),如果
Borland
不存在,對(duì)
Microsoft
不是更有力嗎?其實(shí)
Microsoft
可能精通中國(guó)歷史,讀過(guò)《三國(guó)》、十分了解戰(zhàn)國(guó)時(shí)期的中國(guó),其實(shí)
Borland
形式上的存在,對(duì)
Microsoft
是十分有利的,至少形式上還有競(jìng)爭(zhēng)對(duì)手,而事實(shí)上
Borland
已經(jīng)受控于
Microsoft
(
Microsoft
是
Borland
的大股東)。你可以看到一些微妙的現(xiàn)象:
Borland
為
Microsoft
提供了大量的人才,其中包括
Delphi
總設(shè)計(jì)師以及
Borland ?C++
編譯器的核心成員;同時(shí)也為
Microsoft ?.NET
提供強(qiáng)有力的護(hù)航服務(wù)(看看
C# ?Builder
、
Delphi ?.NET
)。
1998
年
Microsoft ?
的
COM
技術(shù)基本已經(jīng)成熟,這個(gè)技術(shù)使人感到震撼,當(dāng)時(shí)
Microsoft
的對(duì)手們提出
“OpenDoc”
用于對(duì)抗
“COM”
,你看看
“OpenDoc”
陣營(yíng)的幾個(gè)成員:
IBM
、
Apple
、
Borland
、
Novell
,你會(huì)感到這個(gè)陣營(yíng)十分豪華、強(qiáng)大。但結(jié)果卻差強(qiáng)人意,
“OpenDoc”
無(wú)疾而終,而
“COM”
依然生機(jī)勃勃。
?
???
有人說(shuō)
“COM”
沒(méi)落了,那么就太不了解
Microsoft
了。在與
“OpenDoc”
的競(jìng)爭(zhēng)中,
“COM”
是個(gè)徹底的勝利者,在與
“Java”
的競(jìng)爭(zhēng)中,
“COM”
成功的進(jìn)化了,在這個(gè)過(guò)程中
Microsoft
體現(xiàn)了強(qiáng)大的吸收能力、以及無(wú)法想象的韌勁。
.NET
只不過(guò)是
COM
的
“
別名
”
而已。對(duì)于一個(gè)經(jīng)驗(yàn)豐富的
C++
程序員而言,
.NET
就是
COM
的進(jìn)化,而
Microsoft
內(nèi)部
.NET
就是
“COM ?3.0”
(
OLE2
就是
COM ?2.0
),而
“CLR”
就是一個(gè)不擇不扣的
COM
對(duì)象。曾經(jīng)有人問(wèn)我,既然牛頓時(shí)代就奠定了基礎(chǔ)(想想著名的牛頓
-
萊布尼茨公式),幾百年后的今天,數(shù)學(xué)還研究
“
微積分
”
嗎?回答當(dāng)然是依然在研究!
“
微積分
”
早期是針對(duì)函數(shù)的,現(xiàn)代
“
微積分
”
是針對(duì)
“
流形(
Manifold
)、纖維叢(
Fiber ?Bundle
)
”
的,概念深?yuàn)W了,可是基本思想不變,只是
“
微積分
”
的思想得到合理的延拓與進(jìn)化,你了解
Microsoft
嗎?
Microsoft ?Research
有一批超一流的數(shù)學(xué)家在為
Microsoft
工作,其中一些是斐爾茲獎(jiǎng)的得主,
Microsoft
正在實(shí)現(xiàn)如同
“
微積分
”
進(jìn)化到
“
微分流形
”
一樣將
“COM”
進(jìn)化到
“.NET”
。從科學(xué)概念角度上分析
COM
與
Java
,可能
COM
更全面、精確,從實(shí)現(xiàn)的成熟度上
Java
可能更成熟,可是你看到,
Microsoft
正在不緊不慢的追趕。
Microsoft
令人聯(lián)想起戰(zhàn)國(guó)時(shí)期的強(qiáng)秦。
? ?
戰(zhàn)國(guó)時(shí)期的秦國(guó),采取
“
遠(yuǎn)交近攻
”“
撫弱掠強(qiáng)
”
等措施傲視六國(guó),今天的
Microsoft
也是這樣,
VB1.0
時(shí),
Microsoft
推出
“VBX”
控件技術(shù),眾多的小公司得以生存,
Microsoft
自己不開(kāi)發(fā)
“VBX”
組件,同樣
“VBX”
進(jìn)化為
“OCX”
時(shí),
Microsoft
并不十分強(qiáng)大,可是這種試探得到眾多小公司的響應(yīng)。
1997
年
Microsoft ?Office ?97
、
1998
年
Microsoft
推出
Visual ?Studio ?6.0
,給眾多中、小公司提供了生存、發(fā)展的機(jī)會(huì),例如
Microsoft ?Office ?97
中集成了
Visual ?Basic ?for ?Application ?5.0
,這項(xiàng)技術(shù)使得幾百家軟件開(kāi)發(fā)商與
Microsoft
簽署了
VBA
技術(shù)許可協(xié)議,即使
AutoDesk
這樣的公司都與
Microsoft
簽署了這個(gè)協(xié)議,這個(gè)協(xié)議使得每個(gè)集成
VBA
的產(chǎn)品的給個(gè)用戶許可為
Microsoft
付
40$
的許可費(fèi),如果你了解
VSIP
(
Visual ?Studio ?Integration ?Protocol
)協(xié)議,以及有多少公司簽訂了
VSIP
協(xié)議,你就真正感覺(jué)到
Microsoft
的可怕;
Microsoft ?Office ?97
、
Visual ?Studio ?6.0
的用戶界面十分漂亮,為什么
Microsoft
自己的開(kāi)發(fā)工具不提供類(lèi)似的軟件組件?你看到眾多第三方的
Microsoft
盟友紛紛推出自己的界面庫(kù)以模仿
Microsoft
,他們不會(huì)反對(duì)
Microsoft
,因?yàn)樗麄円呀?jīng)形成了使得
Microsoft
以及這些公司得以生存的生態(tài)圈。
?
??? Microsoft
的技術(shù)儲(chǔ)備有多少,
Microsoft
之外的人很難說(shuō)清楚,
Microsoft
中國(guó)公司也未必了解多少,
1999
年
WTL
類(lèi)庫(kù)剛剛出現(xiàn)的時(shí)候,人們就希望
WTL
能得到官方的支持,或授權(quán)給一個(gè)
Microsoft
之外的一個(gè)公司(你能想象出
Borland ?C++ ?5.0
內(nèi)置的
ActiveX
開(kāi)發(fā)機(jī)制是基于
Microsoft ?ATL
類(lèi)庫(kù)嗎?),直到今天,
WTL
依然如故,我們完全相信,如果
Microsoft
強(qiáng)力推廣
WTL
,
WTL
完全可以流行,可是
Microsoft
不缺類(lèi)似的技術(shù),類(lèi)似的類(lèi)庫(kù)還有
BCL(Base ?Control ?Library
,一個(gè)用于開(kāi)發(fā)輕量級(jí)
ActiveX
控件的類(lèi)庫(kù)
)
,
Microsoft
還有一個(gè)基于
ATL
的類(lèi)庫(kù),這個(gè)類(lèi)庫(kù)用于開(kāi)發(fā)
ActiveX ?Designer
,
ActiveX ?Designer
是絕大多數(shù)程序員不了解得一類(lèi)對(duì)象,如果你熟悉
Office
開(kāi)發(fā),你知道
Office ?VBA ?
中有一類(lèi)對(duì)象,即
Form2
,此外
VB6.0 ?
中的報(bào)表設(shè)計(jì)器(以及著名的
Active ?Reporter
),都屬于此類(lèi)對(duì)象,用這個(gè)類(lèi)庫(kù),你可以為
VB6.0
以及集成
VBA
的系統(tǒng)提供定制化的可視化設(shè)計(jì)機(jī)制等等,如今
ActiveX ?Designer
已經(jīng)演化為集成于
Visual ?Studio ?.NET
中的設(shè)計(jì)器。
向
Microsoft
學(xué)習(xí)
?
? ? ? ?
無(wú)論從什么角度評(píng)價(jià)
Microsoft
,我覺(jué)得
Microsoft
是值得我們學(xué)習(xí)的,如果說(shuō)生活在這個(gè)時(shí)代有
Microsoft
存在是一場(chǎng)災(zāi)難,你就應(yīng)該痛恨這個(gè)家伙,但你首先要向這個(gè)家伙學(xué)習(xí)!我無(wú)意為
Microsoft
歌功頌德,我只是想說(shuō)出十幾年我對(duì)
Microsoft
技術(shù)的感受。
?
? ? ? ?Microsoft
在研究式的開(kāi)發(fā)中受益極大,如果你有興趣,你可以訪問(wèn)
http://research.microsoft.com/
,雖然部分中國(guó)公司也有研究院,但與
Microsoft
相比,真有
“
米粒之珠,也放光華?
”
的感覺(jué)。
2003
年,我在北京的一個(gè)地方現(xiàn)場(chǎng)體驗(yàn)了
Microsoft
亞洲研究院的招聘會(huì),我看到中國(guó)的精英們進(jìn)入
Microsoft
的渴望,事實(shí)上,在中國(guó)大陸,
Microsoft
亞洲研究院的人力資源已經(jīng)延伸到各著名高校的相關(guān)專(zhuān)業(yè)的核心層,我感到,
Microsoft
幾乎不需要
“
求賢
”
,因?yàn)椋灰?/span>
Microsoft
需要,精英們會(huì)
“
蜂擁而至
”
,每個(gè)人都有
“
可以理解
”
的理由而向往那個(gè)地方,如果為搞數(shù)學(xué)研究蜂擁到加州大學(xué),我覺(jué)得可以理解,因?yàn)槟抢镉袛?shù)學(xué)土壤,出了成果國(guó)人也會(huì)感到自豪,因?yàn)?/span>
“
科學(xué)無(wú)國(guó)界
”
。技術(shù)是否有國(guó)界?不知道是否有定論?!想想
DVD
等技術(shù)專(zhuān)利給國(guó)內(nèi)業(yè)界帶來(lái)的災(zāi)難,不知道應(yīng)不應(yīng)該痛定思痛,在
Microsoft
校園招聘現(xiàn)場(chǎng)的氣氛中,我似乎明白了為什么國(guó)人
“
原創(chuàng)技術(shù)
”
少得可憐。我讀過(guò)幾本
Microsoft
亞洲研究院的高手寫(xiě)的書(shū),明顯可以看出,
Bill ?gate ?
是他們的精神領(lǐng)袖以及他們對(duì)
Microsoft
的虔誠(chéng),國(guó)內(nèi)的研究機(jī)構(gòu)應(yīng)當(dāng)研究一下
Microsoft
的用人之道,
Microsoft
好像是三國(guó)里的人物,不知是劉備還是曹操,或者二者的混合物。我經(jīng)常路過(guò)西格瑪大廈,第一次西格瑪大廈進(jìn)入真有
“
朝圣
”
的感覺(jué),也與
Microsoft
中國(guó)的幾個(gè)層次的人打過(guò)交道,各中滋味實(shí)在一言難盡。
?
? ? ? ?
在
Office
大戰(zhàn)中,國(guó)產(chǎn)軟件的確在一些方面與
Microsoft
進(jìn)行較量,其實(shí)給人的感覺(jué)很勉強(qiáng),界面上的似是而非,或用戶習(xí)慣方面的接近并不能解決根本的問(wèn)題,一個(gè)好的軟件開(kāi)發(fā)人員必須是一個(gè)軟件使用的高手,很難想象一個(gè)軟件操作水平很拙劣的開(kāi)發(fā)人員能開(kāi)發(fā)出高水平的軟件,我最早使用的軟件之一就是
Microsoft ?Word
,當(dāng)時(shí)的版本是
2.0
,大概是
1992
年的事情,給我留下深刻印象的是集成于
Word
中的
Word ?Basic
,后來(lái),我接觸到
Excel ?3.0
,不出所料,
Excel
中集成的是
Excel ?Basic
,后來(lái)使用的
Access
中自然內(nèi)置
Access ?Basic ?1.0
,在這些軟件集成捆綁成
Office
之前,我就感覺(jué)這些產(chǎn)品的構(gòu)思十分了不起,很具有
Microsoft
的風(fēng)格,因?yàn)槟阒溃词故且粋€(gè)
DOS
,
Microsoft
都要提供一個(gè)內(nèi)置的
QBasic
或
GW ?Basic
。雖然關(guān)于
Microsoft
的產(chǎn)品評(píng)論很多,作為一個(gè)技術(shù)人員,我認(rèn)為
Microsoft
的產(chǎn)品構(gòu)思絕對(duì)是第一流的,從
1994
年早期的
Office
系列到
1997
年形成的
Office ?4.2
,我認(rèn)為,技術(shù)構(gòu)思上均領(lǐng)先于我國(guó)
2002
年以后的
Office
產(chǎn)品,你聽(tīng)說(shuō)過(guò)如下說(shuō)法嗎?
“Dos ?
作為操作系統(tǒng)的時(shí)代,
Windows
是應(yīng)用軟件;
Windows
是操作系統(tǒng)時(shí),
Office
成為
Dos
時(shí)代的
Windows
;那么如果按此規(guī)律,
Office
會(huì)不會(huì)替代
Windows
而成為操作系統(tǒng)?
”
,現(xiàn)在在開(kāi)發(fā)領(lǐng)域
Visual ?Studio( ?.NET)
正在成為另一個(gè)
Office
,你注意到了嗎?控制
Visual ?Studio( ?.NET)
集成開(kāi)發(fā)環(huán)境的仍然是一個(gè)
Basic
語(yǔ)言引擎(
Visual ?Basic ?.NET
)。
?
? ? ? ?
與許多公司不同的是,在技術(shù)體系上,
Microsoft
幾乎所有的產(chǎn)品是息息相關(guān)的,
Windows
、
Office
、
Visual ?Studio ?.NET
雖然各不相同,但公共的核心即將形成,我們已經(jīng)看到,核心組件方面,
Office
與
Visual ?Studio ?.NET
日漸趨于一致,例如
Microsoft
正在將
Office ?2003
的核心組件
VBA ?6.X
逐步用新的
Visual ?Studio ?Tools ?for ?Office
替代,而我們依然在一些似是而非的現(xiàn)象上與
Microsoft
的產(chǎn)品比較差距,國(guó)家采購(gòu)或政府采購(gòu)支持的公司,不去鉆研核心技術(shù),只是急功近利的采用短期行為急于與
Microsoft
相爭(zhēng),不知是否有蚍蜉撼樹(shù)的感覺(jué),個(gè)人的體驗(yàn)是,先學(xué)習(xí)
Microsoft
,踏踏實(shí)實(shí)的學(xué),了解
Microsoft
,深入的了解,然后再喊口號(hào)。
為什么用
MFC
?
?? ?? ?? ?? ?
? ? ? ?
經(jīng)過(guò)若干年的競(jìng)爭(zhēng),
Borland ?
的
OWL
幾乎消失了,這個(gè)
OWL
是個(gè)非常漂亮的
C++
類(lèi)庫(kù),在
Borland ?C++ ?3.1
風(fēng)光無(wú)限的年代,
OWL
真正的做到了獨(dú)領(lǐng)風(fēng)騷。然而,
Borland ?C++ ?4.0
錯(cuò)過(guò)了進(jìn)入
32
位程序的最佳時(shí)機(jī),
BC ?4.0
推出后不久,迎來(lái)了
Win95
,
Borland
倉(cāng)促上陣,以一個(gè)小的
“Pack”
使得
BC4
可以編譯基于
Win4
的程序,當(dāng)時(shí)的
Visual ?C++
是
2.0
版,支持
Window16
的版本為
Visual ?C++1.51
,有意思的是
Borland
可以用同一個(gè)編譯器同時(shí)支持
Win16
、
Win32
,而
Microsoft
卻不得不為
Win16
、
Win32
提供不同的編譯器。然而,非正式版本的
Visual ?C++ ?2.1
與
Visual ?C++ ?2.2
卻悄悄地支持了
Win95
的最新特征,即
Win95
新提供的一組公共控件,在我的印象中,
Borland
對(duì)
Win95
新特征的支持不利使得
MFC
與
OWL
的距離極大的縮短了。稍后到來(lái)的
Borland ?C++ ?4.5
沒(méi)有改變這個(gè)狀況,盡管
Borland ?C++ ?5.0
同時(shí)支持
OWL
與
MFC
,可是敗象已經(jīng)顯露,
Borland ?C++
非常遺憾的只走到了
5.5
版。
C++ ?Builder
雖然形式上引入了
Delphi
的
VCL
庫(kù),可是許多
C++
程序員并不買(mǎi)賬,因?yàn)樵S多以
C++
為樂(lè)的人更喜歡以編輯的模式進(jìn)行編碼。
Visual ?C++ ?4.0
的出現(xiàn),在
C++
這個(gè)戰(zhàn)場(chǎng)上,
Borland
開(kāi)始落敗了。
?
? ? ? ?MFC
發(fā)展到今天,已經(jīng)十多年了,盡管褒貶不一,但可以肯定,十幾年的技術(shù)積累已經(jīng)奠定了
MFC
的生存基礎(chǔ),即使
Microsoft
的長(zhǎng)角發(fā)布,
MFC
也不能推出
Windows
的舞臺(tái),事實(shí)上,長(zhǎng)角(
Longhorn
)之后的
Visual ?Studio ?.NET
仍將
MFC
作為一個(gè)重要的組成部分,在今年的
Visual ?Studio ?.NET ?2005
中,
MFC
在
C++
中的位置依然如故。
MFC
的未來(lái),應(yīng)該不必?fù)?dān)心,只要你深入考察
.NET
類(lèi)庫(kù),你會(huì)發(fā)現(xiàn),
MFC
的許多思想機(jī)制正悄然進(jìn)入
.NET
,與此同時(shí),
Microsoft
的第三方盟友十多年來(lái)已為
MFC
開(kāi)發(fā)了大量的擴(kuò)展庫(kù),如果
Microsoft
是船,第三方盟友就是載舟之水。許多人認(rèn)為
MFC
不發(fā)展了,其實(shí)是一種錯(cuò)覺(jué),
Visual ?C++ ?6
的界面十分經(jīng)典,特別是其中的
Docking
控制條機(jī)制,其實(shí)
Visual ?C++ ?6
的
IDE
完全就是
MFC
寫(xiě)的,可是
MFC
類(lèi)庫(kù)中控制條相關(guān)的類(lèi)功能很弱,為什么?你會(huì)看到許多與
Microsoft
友好的公司,他們很快的在
MFC
基礎(chǔ)上實(shí)現(xiàn)了
Visual ?C++ ?6 ?
的
Docking
機(jī)制,這就是
Microsoft
的高明之處,
Microsoft
很會(huì)給盟友提供機(jī)會(huì),其一貫的做法就是在自己的商品化產(chǎn)品中預(yù)先提供一些有趣的特征,使得其他一些公司進(jìn)行模仿以帶動(dòng)用戶群體。
Borland
不具備這樣的儲(chǔ)備。
MFC
第三方市場(chǎng)的繁榮,得益于
Microsoft
的策略與明智。
MFC
可否跨平臺(tái)?理論上完全可以,
Microsoft
不做,也是策略,但是有許多重要的產(chǎn)品
Microsoft
卻默許
MFC
移植到其他平臺(tái),事實(shí)上,
Microsoft
的合作伙伴之一
Mainsoft
公司(
Windows
源碼就是從這家公司流失的),幾年來(lái)就是負(fù)責(zé)移植
MFC
程序移植到
UINIX
、
Linux
、
AIX
等操作系統(tǒng)之上。
?
? ? ? ?
新版的
Visual ?C++
中
MFC
已經(jīng)支持
.NET
開(kāi)發(fā)了,
MFC
與
ATL
的協(xié)作更好了。根據(jù)我的經(jīng)驗(yàn),
MFC
、
ATL
與
.NET
庫(kù)三者完全可以融合在一起綜合應(yīng)用到實(shí)際的開(kāi)發(fā)工作中去,如果你是
MFC
行家,我希望
ATL
與
.NET
庫(kù)能成為你的忠實(shí)的左右手。那么有沒(méi)有同時(shí)支持
MFC
、
ATL
與
.NET
庫(kù)的程序?當(dāng)然有,
Visual ?Studio ?.NET ?IDE
就是!而且
Visual ?Studio ?.NET ?IDE
還支持用
ATL
與
.NET
庫(kù)擴(kuò)展的
Addin
。
下面仍然有很多,但是不再轉(zhuǎn)載:http://blog.csdn.net/sunhui/archive/2005/03/15/319551.aspx
posted on 2006-12-30 13:50
喬棟 閱讀(264)
評(píng)論(0) 編輯 收藏 引用 所屬分類(lèi):
C++