用宏調用DirectX COM的方法(翻譯)

來源:互聯網
上載者:User

用宏調用DirectX COM 的方法

   很多微軟的DirectX介面為每一種方法定義了一個宏,這樣在你的應用程式中使用這些方法會更簡單一些。你會發現這些宏定義在介面聲明的標頭檔中。這些宏被設計成在c中的宏和在c++中的宏。如果你想使用在c++中的宏,你必須定義__cplusplus.否則你將使用在c中的宏。宏的文法在兩種語言當中是相同的,但是在標頭檔中它們是分開定義的,以便適當的對呼叫約定進行擴充。

   例如:下面的程式碼片段從d3d.h標頭檔中顯示了為IDirect3D8::GetAdapterIdentifier 方法定義的c宏和c++宏。

   #if !defined(__cplusplus) || defined(CINTERFACE)

   ...
   #define IDirect3D8_GetAdapterIdentifier(p,a,b,c)    (p)->lpVtbl->GetAdapterIdentifier(p,a,b,c)
   ...
   #else
   ...
   #define IDirect3D8_GetAdapterIdentifier(p,a,b,c) (p)->GetAdapterIdentifier(a,b,c)
   ...
   #endif

   使用這些宏,你首先必須得到相關介面的指標。宏的第一個參數必須設定為這個指標,餘下的參數對應著方法中的參數。宏的傳回值是一個HRESULT類型的,這個值就是宏所對應的方法的傳回值。下面的程式碼片段用了一個宏來呼叫IDirect3D8::GetAdapter(dentifier方法,pD3D是指向IDirect3D8介面的指標。

   hr = IDirect3D8_GetAdapterIdentifier(pD3D,
                                     Adapter,
                                     dwFlags,
                                     pIdentifier);

注: 由於翻譯水平有限,錯誤在所難免。如發現翻譯的不對的地方還請路上的朋友指正,謝謝

可以任意轉載。

譯者: closeall

 

2005.09.05 譯

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.