當前位置:編程學習大全網 - 編程語言 - VC的MFC和ATL具體是指什麽嘛?

VC的MFC和ATL具體是指什麽嘛?

MFC,微軟基礎類(Microsoft Foundation Classes),實際上是微軟提供的,用於在C++環境下編寫應用程序的壹個框架和引擎,VC++是WinOS下開發人員使用的專業C++ SDK(SDK,Standard SoftWare Develop Kit,專業軟件開發平臺),MFC就是掛在它之上的壹個輸助軟件開發包,MFC作為與VC++血肉相連的部分(註意C++和VC++的區別:C++是壹種程序設計語言,是壹種大家都承認的軟件編制的通用規範,而VC++只是壹個編譯器,或者說是壹種編譯器+源程序編輯器的IDE,WS,PlatForm,這跟Pascal和Dephi的關系壹個道理,Pascal是Dephi的語言基礎,Dephi使用Pascal規範來進行Win下應用程序的開發和編譯,卻不同於Basic語言和VB的關系,Basic語言在VB開發出來被應用的年代已經成了Basic語言的新規範,VB新加的Basic語言要素,如面對對象程序設計的要素,是壹種性質上的飛躍,使VB既是壹個IDE,又成長成壹個新的程序設計語言),MFC同BC++集成的VCL壹樣是壹個非外掛式的軟件包,類庫,只不過MFC類是微軟為VC++專配的..

MFC是Win API與C++的結合,API,即微軟提供的WinOS下應用程序的編程語言接口,是壹種軟件編程的規範,但不是壹種程序開發語言本身,可以允許用戶使用各種各樣的第三方(如我是壹方,微軟是壹方,Borland就是第三方)的編程語言來進行對Win OS下應用程序的開發,使這些被開發出來的應用程序能在WinOS下運行,比如VB,VC++,Java,Dehpi編程語言函數本質上全部源於API,因此用它們開發出來的應用程序都能工作在WinOS的消息機制和繪圖裏,遵守WinOS作為壹個操作系統的內部實現,這其實也是壹種必要,微軟如果不提供API,這個世上對Win編程的工作就不會存在,微軟的產品就會迅速從時尚變成垃圾,上面說到MFC是微軟對API函數的專用C++封裝,這種結合壹方面讓用戶使用微軟的專業C++ SDK來進行Win下應用程序的開發變得容易,因為MFC是對API的封裝,微軟做了大量的工作,隱藏了好多內節程序開發人員在Win下用C++ & MFC編制軟件時的大量內節,如應用程序實現消息的處理,設備環境繪圖,這種結合是以方便為目的的,必定要付出壹定代價(這是微軟的壹向作風),因此就造成了MFC對類封裝中的壹定程度的的冗余和迂回,但這是可以接受的..

最後要明白MFC不只是壹個功能單純的界面開發系統,它提供的類絕大部分用來進行界面開發,關聯壹個窗口的動作,但它提供的類中有好多類不與壹個窗口關聯,即類的作用不是壹個界面類,不實現對壹個窗口對象的控制(如創建,銷毀),而是壹些在WinOS(用MFC編寫的程序絕大部分都在WinOS中運行)中實現內部處理的類,如數據庫的管理類等,學習中最應花費時間的是消息和設備環境,對C++和MFC的學習中最難的部分是指針,C++面向對像程序設計的其它部分,如數據類型,流程控制都不難,建議學習數據結構C++版..

壹、 什 麽 是ATL

---- 1 .COM 的 發 展 及 其 局 限 性

---- 自 從1993 年Microsoft 首 次 公 布 了COM 技 術 以 後,Windows 平 臺 上 的 開 發 模 式 發 生 了 巨 大 的 變 化, 以COM 為 基 礎 的 壹 系 列 軟 件 組 件 化 技 術 將Windows 編 程 帶 入 了 組 件 化 時 代。 廣 大 開 發 人 員 在 為COM 帶 來 的 軟 件 組 件 化 趨 勢 歡 欣 鼓 舞 的 同 時, 對 於COM 開 發 技 術 的 難 度 和 煩 瑣 的 細 節 也 感 到 極 其 的 不 便。COM 編 程 壹 度 被 視 為 壹 種 高 不 可 攀 的 技 術, 令 人 望 而 卻 步。 開 發 人 員 希 望 能 夠 有 壹 種 方 便 快 捷 的COM 開 發 工 具, 提 高 開 發 效 率, 更 好 地 利 用 這 項 技 術。

---- 針 對 這 種 情 況,Microsoft 公 司 在 推 出COM SDK 以 後, 為 簡 化COM 編 程, 提 高 開 發 效 率, 采 取 了 許 多 方 案, 特 別 是 在MFC(Microsoft Foundation Class) 中 加 入 了 對COM 和OLE 的 支 持。 但 是 隨 著Internet 的 發 展, 分 布 式 的 組 件 技 術 要 求COM 組 件 能 夠 在 網 絡 上 傳 輸, 而 又 盡 量 節 約 寶 貴 的 網 絡 帶 寬 資 源。 采 用MFC 開 發 的COM 組 件 由 於 種 種 限 制 不 能 很 好 地 滿 足 這 種 需 求, 因 此Microsoft 在1995 年 又 推 出 了 壹 種 全 新 的COM 開 發 工 具 — —ATL。

---- ATL 是ActiveX Template Library 的 縮 寫, 它 是 壹 套C++ 模 板 庫。 使 用ATL 能 夠 快 速 地 開 發 出 高 效、 簡 潔 的 代 碼, 同 時 對COM 組 件 的 開 發 提 供 最 大 限 度 的 代 碼 自 動 生 成 以 及 可 視 化 支 持。 為 了 方 便 使 用, 從Microsoft Visual C++ 5.0 版 本 開 始,Microsoft 把ATL 集 成 到Visual C++ 開 發 環 境 中。1998 年9 月 推 出 的Visual Studio 6.0 集 成 了ATL 3.0 版 本。 目 前,ATL 已 經 成 為Microsoft 標 準 開 發 工 具 中 的 壹 個 重 要 成 員, 日 益 受 到C++ 開 發 人 員 的 重 視。

---- ATL 究 竟 給 開 發 人 員 帶 來 了 什 麽 樣 的 益 處 呢 ? 這 要 先 從ATL 產 生 以 前 的COM 開 發 方 式 說 起。

---- 在ATL 產 生 以 前, 開 發COM 組 件 的 方 法 主 要 有 兩 種: 壹 是 使 用COM SDK 直 接 開 發COM 組 件, 另 壹 種 方 式 是 通 過MFC 提 供 的COM 支 持 來 實 現。

---- 直 接 使 用COM SDK 開 發COM 組 件 是 最 基 本 也 是 最 靈 活 的 方 式。 通 過 使 用Microsoft 提 供 的 開 發 包, 我 們 可 以 直 接 編 寫COM 程 序。 但 是, 這 種 開 發 方 式 的 難 度 和 工 作 量 都 很 大, 壹 方 面, 要 求 開 發 者 對 於COM 的 技 術 原 理 具 有 比 較 深 入 的 了 解( 雖 然 對 技 術 本 身 的 深 刻 理 解 對 使 用 任 何 壹 種 工 具 都 是 非 常 有 益 的, 但 對 於COM 這 樣 壹 整 套 復 雜 的 技 術 而 言, 在 短 時 間 內 完 全 掌 握 是 很 難 的); 另 壹 方 面, 直 接 使 用COM SDK 要 求 開 發 人 員 自 己 去 實 現COM 應 用 的 每 壹 個 細 節, 完 成 大 量 的 重 復 性 工 作。 這 樣 做 的 結 果 是, 不 僅 降 低 了 工 作 效 率, 同 時 也 使 開 發 人 員 不 得 不 把 許 多 精 力 投 入 到 與 應 用 需 求 本 身 無 關 的 技 術 細 節 中。 雖 然 這 種 開 發 方 式 對 於 某 些 特 殊 的 應 用 很 有 必 要, 但 這 種 編 程 方 式 並 不 符 合 組 件 化 程 序 設 計 方 法 所 倡 導 的 可 重 用 性, 因 此, 直 接 采 用COM SDK 不 是 壹 種 理 想 的 開 發 方 式。

---- 使 用MFC 提 供 的COM 支 持 開 發COM 應 用 可 以 說 在 使 用COM SDK 基 礎 上 提 高 了 自 動 化 程 度, 縮 短 了 開 發 時 間。MFC 采 用 面 向 對 象 的 方 式 將COM 的 基 本 功 能 封 裝 在 若 幹MFC 的C++ 類 中, 開 發 者 通 過 繼 承 這 些 類 得 到COM 支 持 功 能。 為 了 使 派 生 類 方 便 地 獲 得COM 對 象 的 各 種 特 性,MFC 中 有 許 多 預 定 義 宏, 這 些 宏 的 功 能 主 要 是 實 現COM 接 口 的 定 義 和 對 象 的 註 冊 等 通 常 在COM 對 象 中 要 用 到 的 功 能。 開 發 者 可 以 使 用 這 些 宏 來 定 制COM 對 象 的 特 性。

---- 另 外, 在MFC 中 還 提 供 對Automation 和ActiveX Control 的 支 持, 對 於 這 兩 個 方 面,Visual C++ 也 提 供 了 相 應 的AppWizard 和ClassWizard 支 持, 這 種 可 視 化 的 工 具 更 加 方 便 了COM 應 用 的 開 發。

---- MFC 對COM 和OLE 的 支 持 確 實 比 手 工 編 寫COM 程 序 有 了 很 大 的 進 步。 但 是MFC 對COM 的 支 持 還 不 夠 完 善 和 徹 底, 例 如 對COM 接 口 定 義 的IDL 語 言,MFC 並 沒 有 任 何 支 持, 此 外 對 於 近 些 年 來COM 和ActiveX 技 術 的 新 發 展MFC 也 沒 有 提 供 靈 活 的 支 持。 這 是 由MFC 設 計 的 基 本 出 發 點 決 定 的。MFC 被 設 計 成 對Windows 平 臺 編 程 開 發 的 面 向 對 象 的 封 裝, 自 然 要 涉 及Windows 編 程 的 方 方 面 面,COM 作 為Windows 平 臺 編 程 開 發 的 壹 個 部 分 也 得 到MFC 的 支 持, 但 是MFC 對COM 的 支 持 是 以 其 全 局 目 標 為 出 發 點 的, 因 此 對COM 的 支 持 必 然 要 服 從 其 全 局 目 標。 從 這 個 方 面 而 言,MFC 對COM 的 支 持 不 能 很 好 地 滿 足 開 發 者 的 要 求。

---- 隨 著Internet 技 術 的 發 展,Microsoft 將ActiveX 技 術 作 為 其 網 絡 戰 略 的 壹 個 重 要 組 成 部 分 大 力 推 廣, 然 而 使 用MFC 開 發 的ActiveX Control, 代 碼 冗 余 量 大, 即 所 謂 的“ 肥 代 碼”(Fat Code), 而 且 必 須 要 依 賴 於MFC 的 運 行 時 刻 庫 才 能 正 確 地 運 行。 雖 然MFC 的 運 行 時 刻 庫 只 有 部 分 功 能 與COM 有 關, 但 是 由 於MFC 的 繼 承 實 現 的 本 質,ActiveX Control 必 須 背 負 運 行 時 刻 庫 這 個 沈 重 的 包 袱。 如 果 采 用 靜 態 連 接MFC 運 行 時 刻 庫 的 方 式, 這 將 使ActiveX Control 代 碼 過 於 龐 大, 在 網 絡 上 傳 輸 時 將 占 據 寶 貴 的 網 絡 帶 寬 資 源; 如 果 采 用 動 態 連 接MFC 運 行 時 刻 庫 的 方 式, 這 將 要 求 瀏 覽 器 壹 方 必 須 具 備MFC 的 運 行 時 刻 庫 支 持。 總 之,MFC 對COM 技 術 的 支 持 在 網 絡 應 用 的 環 境 下 也 顯 得 很 不 靈 活。

  • 上一篇:filter跟攔截器的區別和執行順序
  • 下一篇:學數控技術的女生就業前景如何?
  • copyright 2024編程學習大全網