分析Hilo項目

來源:互聯網
上載者:User

Hilo項目的類別關係圖,使用Visual Studio 2010的可視化和建模功能包建立。

Hilo項目是微軟的一個用於示範Windows 7 API和Visual C++ 2010的功能的一個開源項目。這個項目不僅示範了Windows 7 和Windows Vista新增的觸摸、Direct2D、Shell API的使用,而且也提供了設計和開發高效能Windows程式的建議。這個項目的目標在它的twitter首頁表現無遺:將開發本地代碼重新作為重點。

這個項目是基於免費的Visual C++ Express和Windows 7 SDK,這意味著更多的程式員可以嘗試這個項目而不必購買Visual Studio 2010。這有助於擴充這個項目的影響力。不過這也意味著不能使用成熟MFC和ATL類庫。作為替代,Hilo項目包含了以下類

  • ComPtr COM指標管理
  • WindowApplication 訊息迴圈處理
  • Window 視窗API封裝
  • WindowFactory 視窗類別和視窗過程
  • WindowLayout 視窗布局
  • WindowMessageHandler 視窗訊息分發

可以很明顯地看到,這些類都被放在了一個比較容易重用的DLL模組裡面,文檔中也允許程式員在自己的程式中直接拿來使用。

由於WIndows Vista/7中WDDM 1.0的驅動是沒有GDI硬體加速的,直到WDDM1.1才有有限度的支援,所以在不支援DirectX 10.1的顯卡下GDI會很慢。在對於使用者介面技術的選擇上,Hilo項目組根據這個現象選擇了在現代硬體上更快、更節省記憶體和CPU(當然,這也意味著更耗顯存和GPU)的DirectX,而不是比較慢的GDI。這也減少了視窗的數目,整個程式現在只有一個視窗。這樣做的好處是發明MFC的訊息映射的時候所針對的項目需求,例如大量的視窗、很小記憶體、衍生類別需要繼承訊息處理函數現在都不成為問題了,所以在這唯一的一個視窗的過程裡面可以放一個大大的switch語句。

Hilo在模組化這方面做得比較好,基本上看到類名字就知道這個類是做什麼的,不像看文檔裡面成員函數看到眼花的CWnd,可以看到Hilo對視窗的各個方面處理是分開的。而且雖然Hilo並不是一個COM伺服器,但是在耦合的時候是使用COM的介面而不是直接使用類的名字,這樣在編譯的時候就可以執行類型檢同時也保留可擴充性。MFC就做得比較差,不但CObject::IsKindOf需要在啟動並執行時候判斷,而且有引用視圖類的標頭檔之前必須先包含文檔類的標頭檔的問題。

比較遺憾的是,在推廣本地代碼開發方面,Hilo項目似乎做得還不夠。Visual C++ Express的使用者主要是學生和業餘人員,而這個項目示範的代碼複用、COM和模板對於他們來說需要花一些時間來理解。另外,項目的許可協議看起來也讓人一頭霧水,裡面把Hilo描述為軟體而不是原始碼。不過Visual C++項目組宣布這個項目的時候聲稱Hilo只是本地開發樣本系列的第一個例子,作為原型來說,Hilo的作用在把“酷”這個詞和Windows本地開發聯絡起來這個方面還是做得不錯的。上一次VC開發被人稱為酷的時間應該是遠在98年了吧……

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.