DirectX 9.0 ÀÇ ¼Ò°³ DirectX SDK ÀÇ »ç¿ë¹ý C ¶Ç´Â C++ ¿¡ ÀÇÇÑ DirectX ÇÁ·Î±×·¡¹Ö COM ÀÇ »ç¿ë¹ý DirectX 9.0 COM ÀÎÅÍÆäÀ̽º¿¡¼­ÀÇ ATL ÀÇ »ç¿ë   [¸ñÂ÷¿­¶÷] [ÁÖ¼Òº¹»ç] [½½·Ôºñ¿ì±â]
DirectX 9.0 COM ÀÎÅÍÆäÀ̽º¿¡¼­ÀÇ ATL ÀÇ »ç¿ë
 
Microsoft DirectX 9.0

DirectX 9.0 COM ÀÎÅÍÆäÀ̽º¿¡¼­ÀÇ ATL ÀÇ »ç¿ë


Microsoft® DirectX® 9.0 À¸·Î Active Template Library (ATL)¸¦ »ç¿ëÇϱâ À§Çؼ­(¶§¹®¿¡)´Â, ATL ¿ÍÀÇ È£È¯¼ºÀ» À§Çؼ­(¶§¹®¿¡) ÀÎÅÍÆäÀ̽º¸¦ ÀçÁ¤ÀÇÇÒ Çʿ䰡 ÀÖ´Ù. À̰Ϳ¡ ÀÇÇØ,CComQIPtr Ŭ·¡½º¸¦ ¿Ã¹Ù¸£°Ô »ç¿ëÇØ, ÀÎÅÍÆäÀ̽ºÀÇ Æ÷ÀÎÅ͸¦ ÃëµæÇÒ ¼ö ÀÖ´Ù.

ATL ¿¡ ¸ÂÃß¾î ÀÎÅÍÆäÀ̽º¸¦ ÀçÁ¤ÀÇÇÏÁö ¾ÊÀ¸¸é ´ÙÀ½ÀÇ ¿¡·¯ ¸Þ½ÃÁö°¡ Ç¥½ÃµÈ´Ù.

C:\Program Files\Microsoft Visual Studio\VC98\ATL\INCLUDE\atlbase.h(566) :
  error C2787: 'IDirectXFileData' : no GUID has been associated with this object

´ÙÀ½ »ùÇà ÄÚµå´Â,IDirectXFileData ÀÎÅÍÆäÀ̽º¸¦ Á¤ÀÇÇÏ´Â ¹æ¹ýÀ» ³ªÅ¸³»°í ÀÖ´Ù.

// Explicit declaration
struct __declspec(uuid("{3D82AB44-62DA-11CF-AB39-0020AF71E433}")) IDirectXFileData;

// Macro method
#define RT_IID(iid_, name_) struct __declspec(uuid(iid_)) name_
RT_IID("{1DD9E8DA-1C77-4D40-B0CF-98FEFDFF9512}", IDirectXFileData);

ÀÎÅÍÆäÀ̽º¸¦ ÀçÁ¤ÀÇÇÑ ÈÄ´Â,Attach ¸Þ¼­µå¸¦ »ç¿ëÇØ, ::Direct3DCreate9 °¡ µ¹·ÁÁÖ´Â ÀÎÅÍÆäÀ̽º Æ÷ÀÎÅÍ¿¡ ÀÎÅÍÆäÀ̽º¸¦ Attach ÇÒ Çʿ䰡 ÀÖ´Ù. ÀÌ·¸°Ô ÇÏÁö ¾ÊÀ¸¸éIDirect3D9 ÀÎÅÍÆäÀ̽º´Â ½º¸¶Æ® Æ÷ÀÎÅÍ Å¬·¡½º¿¡ ÀÇÇØ ¿Ã¹Ù¸£°í ¸±¸®Áî µÇÁö ¾Ê´Â´Ù.

°³Ã¼°¡ »ý¼º µÇ¾úÀ» ¶§¿ÍCComPtr Ŭ·¡½º¿¡ ÀÎÅÍÆäÀ̽º¸¦ ÇÒ´çÇÒ ¼ö ÀÖ¾úÀ» ¶§¿¡,CComPtr Ŭ·¡½º´Â ÀÎÅÍÆäÀ̽º Æ÷ÀÎÅÍ·Î ³»ºÎÀûÀ¸·Î IUnknown::AddRef ¸¦ È£ÃâÇÑ´Ù. ÀÎÅÍÆäÀ̽º Æ÷ÀÎÅÍÀÇ ´©¼ö¸¦ ¸·±â À§ÇØ, ::Direct3DCreate9 °¡ µ¹·ÁÁÖ´Â ÀÎÅÍÆäÀ̽º·Î IUnknown::AddRef ¸¦ È£ÃâÇØ¼­´Â ¾È µÈ´Ù.

´ÙÀ½ ÄÚµå´Â,IUnknown::AddRef ¸¦ È£ÃâÇÏÁö ¾Ê°í ÀÎÅÍÆäÀ̽º¸¦ ¿Ã¹Ù¸£°Ô ¸±¸®Áî ÇÑ´Ù.

CComPtr<IDirect3D9> d3d;
d3d.Attach(::Direct3DCreate9(D3D_SDK_VERSION));

À§¿¡ÀÇ Äڵ带 »ç¿ëÇÑ´Ù. ´ÙÀ½ ÄÚµå´Â »ç¿ëÇØ¼­´Â ¾È µÈ´Ù. ÀÌ Äڵ忡¼­´Â,IUnknown::AddRef ¿¡ À̾î IUnknown::Release ¸¦ È£ÃâÇϰí ÀÖ¾î, ::Direct3DCreate9 ¿¡ ÀÇÇØ Ãß°¡µÈ ÂüÁ¶¸¦ ¸±¸®Áî ÇÏÁö ¾Ê´Â´Ù.

CComPtr<IDirect3D9> d3d = ::Direct3DCreate9(D3D_SDK_VERSION);

À̰ÍÀº, Microsoft Direct3D® ¿¡ ´ëÇØ, ÀÌ·¯ÇÑ ¹æ¹ýÀ¸·Î Attach ¸Þ¼­µå¸¦ »ç¿ëÇÒ Çʿ䰡 ÀÖ´Â À¯ÀÏÇÑ Àå¼ÒÀÌ´Ù.

CComPTR Ŭ·¡½º ¹× CComQIPtr Ŭ·¡½ºÀÇ ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â, Atlbase.h Çì´õ ÆÄÀÏÀÇ Á¤ÀǸ¦ ÂüÁ¶ÇÒ°Í.



© 2002 Microsoft Corporation. All rights reserved.
¡èTOP