• <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>
            posts - 62,  comments - 19,  trackbacks - 0

            十年 MFC 經歷認識的 Microsoft 技術

            孫輝

            ?


            ?

            自從 2005 3 8 日下午 16 “十年 MFC 經歷認識的 Microsoft 技術”以帖子的方式發表于 CSDN 論壇后,引起了許多網友得好評,使得筆者誠惶誠恐,考慮到該貼過長 ( 人氣指數為 5000) ,因此轉移到 Blog 上,許多網友對此帖的評語只好省略,在此鄙人謝過了!為感謝網友的支持,本人希望今后能發出新的帖子以回報網友對我的鼓勵,再一次謝謝!

            初識 MFC ?
            ? ? ? ?
            我最初知道 MFC 大概是在 1993 年,那個時候 Visual ?C++ 還沒面世,當時 Microsoft C++ 編譯器還很弱,官方的名字是 Microsoft ?C/C++ ?7.0 MFC 的版本是 1.0 ,幾乎沒有引起什么反響,那個時期最好的 C++ 開發環境是 Borland ?C++ ?3.1 ,其實,大概是 1992 11 月份,一個偶然的機會,我領略到 Borland 公司的厲害,記不得在什么地方,我看到一個絕妙的集成開發環境,即 Turbo ?C++ ?3.0 ?for ?Windows ,這是我記憶中第一個真正的 Windows 環境下的 C++ 集成開發環境,那種激動的感覺至今仍記憶猶新,不客氣的說,當時至少在 C++ 方面, Microsoft Borland 不是一個水平的, Borland 明顯的要高于 Microsoft ? , Borland 的產品在技術上給我留下深刻的印象。那個時候 Microsoft 最好的開發平臺是 Visual ?Basic ?3.0 ,而 Borland Delphi 正處于開發階段( Delphi ? 的代碼名稱是: “VB ?Killer” …… ,想起這些十幾年前的往事,我不禁感慨萬千。 ?
            十幾年來,我用過許多開發環境,關于 Visual ?Basic ,我用過最早的 DOS 版本, Windows 版的 Visual ?Basic 我基本上全都用過,至今我還記得每個版本的 VB 安裝盤磁盤的盤數。同樣,我用過各個版本的 Delphi ,特別是 Delphi ?2.0 ,給我留下極好的印象。 Delphi 提供真正編譯的可視化開發環境,那個時候( 1994 年左右), Delphi 就可以開發帶有 GUI 的動態鏈接庫,你可以想象,在 Microsoft ?Access ?2.0 的應用程序中可以加載一個 Delphi ?Form 并進行程序交互,那種感覺真是棒極了。 ?
            ??? Borland ?C++
            是我心中無法抹掉的遺憾,從 Turbo ?C C++ ?Builder ,我深刻的體驗到 Borland 的輝煌和無奈, Delphi VB ?Killer 走到為 VB 護航(你可以想象 Delphi 一步到位的 ActiveX ? 控件開發技術有多牛,早期的 VB 有多土,早期的 VB 不能開發動態鏈接庫,因此無法開發 ActiveX ? 控件,想起來真令人噓唏不已), Borland ?C++ 的命運也是不濟。 Borland ?C++ ?3.1 的輝煌永遠不再了,十幾年的開發工作中,我在 C++ 上投入了大量的精力, Borland ?C++ 曾經給我帶來無數的激動,然而這個經典的名字卻在與 Microsoft 的競爭中漸漸的流逝了 …… ?
            MFC4.0
            的出現,使得人們感覺 Microsoft C++ 方面趕上來了,這一版的 MFC Win95 推出后出現在 Visual ?C++ ?4 中( Microsoft 沒有 VC ?3 , VC4 以前的版本是 2.2 2.1 、 2.0 、 1.51 、 1.5 、 1.0 )。也許是對 Borland ?C++ 的潛意識的失望,我不知不覺的接受了 MFC , VC ?4.2 推出時,我通過正常渠道購買了這個編譯器的企業版。

            ? 關于 Microsoft ?
            ? ? ? ?
            關于 Microsoft ,有無數的人要對這個名字敘說感覺,這個令人討厭的名字!不知道是喜歡還是憎惡,你是程序員,你的心思可能就要因 Microsoft 的存在而動,即使你用 Linux ,你可能也是因為 Microsoft 技術因素。多少年來,這個名字每天都出現在你、我、他的面前,因為你不得不面對 Windows 的存在,可是你憎恨這個名字嗎?你討厭這個名字嗎?我不知道是否已經對這個名字麻木了。 1998 年我個人訂了 Microsoft ?MSDN ?Universal ? 版,我開始比較全面接觸這個公司的開發技術,你可以想象, 1998 年當你面對上百張技術光盤的時候,你就知道什么叫做 厚度 ,當我們有時說出 趕上 ?“ 達到 ”Microsoft 某些產品的水平的時候,可能我們缺乏對這個公司 厚度 的真實了解。進入 MSDN ,我感覺 Microsoft 簡直不是一個 公司 ,而是(或者正在形成)一個 社會 。當時著名的技術網站 http://www.codeguru.com 全部的技術資料是可下載的(那個時候 http://www.codeguru.com 提供整個網站內容下載服務,大約 3M 左右),大名鼎鼎的 www.codeproject.com 還不存在。一開始,我始終潛意識在技術上對比 Microsoft Borland ,應當說技術上 Borland 不比 Microsoft 弱,即使現在也有人持有這個看法,可是為什么 Borland 走到今天這個地步?而 Microsoft 卻如日中天?若干年前,這兩個公司競爭何等激烈,而現在卻是另一番 合作 的景象?可能很多人想過,如果 Borland 不存在,對 Microsoft 不是更有力嗎?其實 Microsoft 可能精通中國歷史,讀過《三國》、十分了解戰國時期的中國,其實 Borland 形式上的存在,對 Microsoft 是十分有利的,至少形式上還有競爭對手,而事實上 Borland 已經受控于 Microsoft Microsoft Borland 的大股東)。你可以看到一些微妙的現象: Borland Microsoft 提供了大量的人才,其中包括 Delphi 總設計師以及 Borland ?C++ 編譯器的核心成員;同時也為 Microsoft ?.NET 提供強有力的護航服務(看看 C# ?Builder Delphi ?.NET )。 1998 Microsoft ? COM 技術基本已經成熟,這個技術使人感到震撼,當時 Microsoft 的對手們提出 “OpenDoc” 用于對抗 “COM” ,你看看 “OpenDoc” 陣營的幾個成員: IBM Apple 、 Borland 、 Novell ,你會感到這個陣營十分豪華、強大。但結果卻差強人意, “OpenDoc” 無疾而終,而 “COM” 依然生機勃勃。 ?
            ???
            有人說 “COM” 沒落了,那么就太不了解 Microsoft 了。在與 “OpenDoc” 的競爭中, “COM” 是個徹底的勝利者,在與 “Java” 的競爭中, “COM” 成功的進化了,在這個過程中 Microsoft 體現了強大的吸收能力、以及無法想象的韌勁。 .NET 只不過是 COM 別名 而已。對于一個經驗豐富的 C++ 程序員而言, .NET 就是 COM 的進化,而 Microsoft 內部 .NET 就是 “COM ?3.0” OLE2 就是 COM ?2.0 ),而 “CLR” 就是一個不擇不扣的 COM 對象。曾經有人問我,既然牛頓時代就奠定了基礎(想想著名的牛頓 - 萊布尼茨公式),幾百年后的今天,數學還研究 微積分 嗎?回答當然是依然在研究! 微積分 早期是針對函數的,現代 微積分 是針對 流形( Manifold )、纖維叢( Fiber ?Bundle 的,概念深奧了,可是基本思想不變,只是 微積分 的思想得到合理的延拓與進化,你了解 Microsoft 嗎? Microsoft ?Research 有一批超一流的數學家在為 Microsoft 工作,其中一些是斐爾茲獎的得主, Microsoft 正在實現如同 微積分 進化到 微分流形 一樣將 “COM” 進化到 “.NET” 。從科學概念角度上分析 COM Java ,可能 COM 更全面、精確,從實現的成熟度上 Java 可能更成熟,可是你看到, Microsoft 正在不緊不慢的追趕。 Microsoft 令人聯想起戰國時期的強秦。 ? ?
            戰國時期的秦國,采取 遠交近攻 ”“ 撫弱掠強 等措施傲視六國,今天的 Microsoft 也是這樣, VB1.0 時, Microsoft 推出 “VBX” 控件技術,眾多的小公司得以生存, Microsoft 自己不開發 “VBX” 組件,同樣 “VBX” 進化為 “OCX” 時, Microsoft 并不十分強大,可是這種試探得到眾多小公司的響應。 1997 Microsoft ?Office ?97 1998 Microsoft 推出 Visual ?Studio ?6.0 ,給眾多中、小公司提供了生存、發展的機會,例如 Microsoft ?Office ?97 中集成了 Visual ?Basic ?for ?Application ?5.0 ,這項技術使得幾百家軟件開發商與 Microsoft 簽署了 VBA 技術許可協議,即使 AutoDesk 這樣的公司都與 Microsoft 簽署了這個協議,這個協議使得每個集成 VBA 的產品的給個用戶許可為 Microsoft 40$ 的許可費,如果你了解 VSIP Visual ?Studio ?Integration ?Protocol )協議,以及有多少公司簽訂了 VSIP 協議,你就真正感覺到 Microsoft 的可怕; Microsoft ?Office ?97 Visual ?Studio ?6.0 的用戶界面十分漂亮,為什么 Microsoft 自己的開發工具不提供類似的軟件組件?你看到眾多第三方的 Microsoft 盟友紛紛推出自己的界面庫以模仿 Microsoft ,他們不會反對 Microsoft ,因為他們已經形成了使得 Microsoft 以及這些公司得以生存的生態圈。 ?
            ??? Microsoft
            的技術儲備有多少, Microsoft 之外的人很難說清楚, Microsoft 中國公司也未必了解多少, 1999 WTL 類庫剛剛出現的時候,人們就希望 WTL 能得到官方的支持,或授權給一個 Microsoft 之外的一個公司(你能想象出 Borland ?C++ ?5.0 內置的 ActiveX 開發機制是基于 Microsoft ?ATL 類庫嗎?),直到今天, WTL 依然如故,我們完全相信,如果 Microsoft 強力推廣 WTL WTL 完全可以流行,可是 Microsoft 不缺類似的技術,類似的類庫還有 BCL(Base ?Control ?Library ,一個用于開發輕量級 ActiveX 控件的類庫 ) Microsoft 還有一個基于 ATL 的類庫,這個類庫用于開發 ActiveX ?Designer , ActiveX ?Designer 是絕大多數程序員不了解得一類對象,如果你熟悉 Office 開發,你知道 Office ?VBA ? 中有一類對象,即 Form2 ,此外 VB6.0 ? 中的報表設計器(以及著名的 Active ?Reporter ),都屬于此類對象,用這個類庫,你可以為 VB6.0 以及集成 VBA 的系統提供定制化的可視化設計機制等等,如今 ActiveX ?Designer 已經演化為集成于 Visual ?Studio ?.NET 中的設計器。

            Microsoft 學習 ?
            ? ? ? ?
            無論從什么角度評價 Microsoft ,我覺得 Microsoft 是值得我們學習的,如果說生活在這個時代有 Microsoft 存在是一場災難,你就應該痛恨這個家伙,但你首先要向這個家伙學習!我無意為 Microsoft 歌功頌德,我只是想說出十幾年我對 Microsoft 技術的感受。 ?
            ? ? ? ?Microsoft
            在研究式的開發中受益極大,如果你有興趣,你可以訪問 http://research.microsoft.com/ ,雖然部分中國公司也有研究院,但與 Microsoft 相比,真有 米粒之珠,也放光華? 的感覺。 2003 年,我在北京的一個地方現場體驗了 Microsoft 亞洲研究院的招聘會,我看到中國的精英們進入 Microsoft 的渴望,事實上,在中國大陸, Microsoft 亞洲研究院的人力資源已經延伸到各著名高校的相關專業的核心層,我感到, Microsoft 幾乎不需要 求賢 ,因為,只要 Microsoft 需要,精英們會 蜂擁而至 ,每個人都有 可以理解 的理由而向往那個地方,如果為搞數學研究蜂擁到加州大學,我覺得可以理解,因為那里有數學土壤,出了成果國人也會感到自豪,因為 科學無國界 。技術是否有國界?不知道是否有定論?!想想 DVD 等技術專利給國內業界帶來的災難,不知道應不應該痛定思痛,在 Microsoft 校園招聘現場的氣氛中,我似乎明白了為什么國人 原創技術 少得可憐。我讀過幾本 Microsoft 亞洲研究院的高手寫的書,明顯可以看出, Bill ?gate ? 是他們的精神領袖以及他們對 Microsoft 的虔誠,國內的研究機構應當研究一下 Microsoft 的用人之道, Microsoft 好像是三國里的人物,不知是劉備還是曹操,或者二者的混合物。我經常路過西格瑪大廈,第一次西格瑪大廈進入真有 朝圣 的感覺,也與 Microsoft 中國的幾個層次的人打過交道,各中滋味實在一言難盡。 ?
            ? ? ? ?
            Office 大戰中,國產軟件的確在一些方面與 Microsoft 進行較量,其實給人的感覺很勉強,界面上的似是而非,或用戶習慣方面的接近并不能解決根本的問題,一個好的軟件開發人員必須是一個軟件使用的高手,很難想象一個軟件操作水平很拙劣的開發人員能開發出高水平的軟件,我最早使用的軟件之一就是 Microsoft ?Word ,當時的版本是 2.0 ,大概是 1992 年的事情,給我留下深刻印象的是集成于 Word 中的 Word ?Basic ,后來,我接觸到 Excel ?3.0 ,不出所料, Excel 中集成的是 Excel ?Basic ,后來使用的 Access 中自然內置 Access ?Basic ?1.0 ,在這些軟件集成捆綁成 Office 之前,我就感覺這些產品的構思十分了不起,很具有 Microsoft 的風格,因為你知道,即使是一個 DOS , Microsoft 都要提供一個內置的 QBasic GW ?Basic 。雖然關于 Microsoft 的產品評論很多,作為一個技術人員,我認為 Microsoft 的產品構思絕對是第一流的,從 1994 年早期的 Office 系列到 1997 年形成的 Office ?4.2 ,我認為,技術構思上均領先于我國 2002 年以后的 Office 產品,你聽說過如下說法嗎? “Dos ? 作為操作系統的時代, Windows 是應用軟件; Windows 是操作系統時, Office 成為 Dos 時代的 Windows ;那么如果按此規律, Office 會不會替代 Windows 而成為操作系統? ,現在在開發領域 Visual ?Studio( ?.NET) 正在成為另一個 Office ,你注意到了嗎?控制 Visual ?Studio( ?.NET) 集成開發環境的仍然是一個 Basic 語言引擎( Visual ?Basic ?.NET )。 ?
            ? ? ? ?
            與許多公司不同的是,在技術體系上, Microsoft 幾乎所有的產品是息息相關的, Windows 、 Office 、 Visual ?Studio ?.NET 雖然各不相同,但公共的核心即將形成,我們已經看到,核心組件方面, Office Visual ?Studio ?.NET 日漸趨于一致,例如 Microsoft 正在將 Office ?2003 的核心組件 VBA ?6.X 逐步用新的 Visual ?Studio ?Tools ?for ?Office 替代,而我們依然在一些似是而非的現象上與 Microsoft 的產品比較差距,國家采購或政府采購支持的公司,不去鉆研核心技術,只是急功近利的采用短期行為急于與 Microsoft 相爭,不知是否有蚍蜉撼樹的感覺,個人的體驗是,先學習 Microsoft ,踏踏實實的學,了解 Microsoft ,深入的了解,然后再喊口號。

            為什么用 MFC ?? ?? ?? ?? ?
            ? ? ? ?
            經過若干年的競爭, Borland ? OWL 幾乎消失了,這個 OWL 是個非常漂亮的 C++ 類庫,在 Borland ?C++ ?3.1 風光無限的年代, OWL 真正的做到了獨領風騷。然而, Borland ?C++ ?4.0 錯過了進入 32 位程序的最佳時機, BC ?4.0 推出后不久,迎來了 Win95 , Borland 倉促上陣,以一個小的 “Pack” 使得 BC4 可以編譯基于 Win4 的程序,當時的 Visual ?C++ 2.0 版,支持 Window16 的版本為 Visual ?C++1.51 ,有意思的是 Borland 可以用同一個編譯器同時支持 Win16 、 Win32 ,而 Microsoft 卻不得不為 Win16 Win32 提供不同的編譯器。然而,非正式版本的 Visual ?C++ ?2.1 Visual ?C++ ?2.2 卻悄悄地支持了 Win95 的最新特征,即 Win95 新提供的一組公共控件,在我的印象中, Borland Win95 新特征的支持不利使得 MFC OWL 的距離極大的縮短了。稍后到來的 Borland ?C++ ?4.5 沒有改變這個狀況,盡管 Borland ?C++ ?5.0 同時支持 OWL MFC ,可是敗象已經顯露, Borland ?C++ 非常遺憾的只走到了 5.5 版。 C++ ?Builder 雖然形式上引入了 Delphi VCL 庫,可是許多 C++ 程序員并不買賬,因為許多以 C++ 為樂的人更喜歡以編輯的模式進行編碼。 Visual ?C++ ?4.0 的出現,在 C++ 這個戰場上, Borland 開始落敗了。 ?
            ? ? ? ?MFC
            發展到今天,已經十多年了,盡管褒貶不一,但可以肯定,十幾年的技術積累已經奠定了 MFC 的生存基礎,即使 Microsoft 的長角發布, MFC 也不能推出 Windows 的舞臺,事實上,長角( Longhorn )之后的 Visual ?Studio ?.NET 仍將 MFC 作為一個重要的組成部分,在今年的 Visual ?Studio ?.NET ?2005 中, MFC C++ 中的位置依然如故。 MFC 的未來,應該不必擔心,只要你深入考察 .NET 類庫,你會發現, MFC 的許多思想機制正悄然進入 .NET ,與此同時, Microsoft 的第三方盟友十多年來已為 MFC 開發了大量的擴展庫,如果 Microsoft 是船,第三方盟友就是載舟之水。許多人認為 MFC 不發展了,其實是一種錯覺, Visual ?C++ ?6 的界面十分經典,特別是其中的 Docking 控制條機制,其實 Visual ?C++ ?6 IDE 完全就是 MFC 寫的,可是 MFC 類庫中控制條相關的類功能很弱,為什么?你會看到許多與 Microsoft 友好的公司,他們很快的在 MFC 基礎上實現了 Visual ?C++ ?6 ? Docking 機制,這就是 Microsoft 的高明之處, Microsoft 很會給盟友提供機會,其一貫的做法就是在自己的商品化產品中預先提供一些有趣的特征,使得其他一些公司進行模仿以帶動用戶群體。 Borland 不具備這樣的儲備。 MFC 第三方市場的繁榮,得益于 Microsoft 的策略與明智。 MFC 可否跨平臺?理論上完全可以, Microsoft 不做,也是策略,但是有許多重要的產品 Microsoft 卻默許 MFC 移植到其他平臺,事實上, Microsoft 的合作伙伴之一 Mainsoft 公司( Windows 源碼就是從這家公司流失的),幾年來就是負責移植 MFC 程序移植到 UINIX 、 Linux 、 AIX 等操作系統之上。 ?
            ? ? ? ?
            新版的 Visual ?C++ MFC 已經支持 .NET 開發了, MFC ATL 的協作更好了。根據我的經驗, MFC 、 ATL .NET 庫三者完全可以融合在一起綜合應用到實際的開發工作中去,如果你是 MFC 行家,我希望 ATL .NET 庫能成為你的忠實的左右手。那么有沒有同時支持 MFC 、 ATL .NET 庫的程序?當然有, Visual ?Studio ?.NET ?IDE 就是!而且 Visual ?Studio ?.NET ?IDE 還支持用 ATL .NET 庫擴展的 Addin 。



            下面仍然有很多,但是不再轉載:http://blog.csdn.net/sunhui/archive/2005/03/15/319551.aspx

            posted on 2006-12-30 13:50 喬棟 閱讀(268) 評論(0)  編輯 收藏 引用 所屬分類: C++
            <2025年6月>
            25262728293031
            1234567
            891011121314
            15161718192021
            22232425262728
            293012345

            常用鏈接

            留言簿(6)

            隨筆分類

            隨筆檔案

            文章分類

            文章檔案

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜


            My blog is worth $0.00.
            How much is your blog worth?

            少妇久久久久久被弄高潮| 久久久av波多野一区二区| 久久国产精品一国产精品金尊| 一级做a爰片久久毛片毛片| 伊人久久大香线焦综合四虎| 精品综合久久久久久888蜜芽| 伊人久久大香线蕉成人| 日本精品久久久久久久久免费| 久久久久久久综合综合狠狠| 久久精品国产亚洲Aⅴ香蕉| 久久国产影院| 无码乱码观看精品久久| 亚洲国产成人久久综合区| 亚洲精品无码久久久久AV麻豆| 性做久久久久久久久久久| 久久久久久免费视频| 99蜜桃臀久久久欧美精品网站 | 午夜天堂av天堂久久久| 午夜精品久久久久久毛片| 91视频国产91久久久| 欧美亚洲另类久久综合| 91久久精品国产91性色也| 久久国产成人午夜aⅴ影院 | 久久精品一本到99热免费| 国产日产久久高清欧美一区| 久久久WWW成人| 亚洲精品无码久久久久sm| 久久99热国产这有精品| 婷婷久久综合| 久久发布国产伦子伦精品| 久久精品国产福利国产琪琪| 久久久久人妻一区二区三区| 99精品久久久久中文字幕| 欧美麻豆久久久久久中文| 久久精品国产亚洲av水果派 | 三级三级久久三级久久| 97精品国产91久久久久久| 人妻无码久久精品| 日本精品久久久久中文字幕| 青青草国产97免久久费观看| 精品九九久久国内精品|