Ada计算机图形DirectX之DxErr


with win32;                  use win32;
with win32.objbase;          use win32.objbase;


package DxErr is


   function DXGetErrorStringA(hr:HRESULT) return LPCCH with Import,Convention=>stdcall,external_name=>"DXGetErrorStringA";
   function DXGetErrorString(hr:HRESULT) return LPCCH with Import,Convention=>stdcall,external_name=>"DXGetErrorStringA";
   function DXGetErrorStringW(hr:HRESULT) return LPCWCH with Import,Convention=>stdcall,external_name=>"DXGetErrorStringW";



   function DXGetErrorDescriptionA(hr:HRESULT) return LPCCH with Import,Convention=>stdcall,external_name=>"DXGetErrorDescriptionA";
   function DXGetErrorDescription(hr:HRESULT) return LPCCH with Import,Convention=>stdcall,external_name=>"DXGetErrorDescriptionA";
   function DXGetErrorDescriptionW(hr:HRESULT) return LPWCH with Import,Convention=>stdcall,external_name=>"DXGetErrorDescriptionW";



   function DXTraceA(strFile:LPCCH;dwLine:DWORD;hr:HRESULT;strMsg:LPCCH;bPopMsgBox:BOOL) return HRESULT with Import,Convention=>stdcall,external_name=>"DXTraceA";
   function DXTrace(strFile:LPCCH;dwLine:DWORD;hr:HRESULT;strMsg:LPCCH;bPopMsgBox:BOOL) return HRESULT with Import,Convention=>stdcall,external_name=>"DXTraceA";
   function DXTraceW(strFile:LPCCH;dwLine:DWORD;hr:HRESULT;strMsg:LPCWCH;bPopMsgBox:BOOL) return HRESULT with Import,Convention=>stdcall,external_name=>"DXTraceW";



   --
   -- 在DEBUG模式下的辅助宏函数,这里借用C导入方式
   --

   function DXTRACE_MSG(str:String) return HRESULT with import,convention=>stdcall,external_name=>"DXTRACE_MSGX";

   function DXTRACE_ERR(str:String;hr:HRESULT) return HRESULT with import,convention=>stdcall,external_name=>"DXTRACE_ERRX";

   function DXTRACE_ERR_MSGBOX(str:String;hr:HRESULT) return HRESULT with import,convention=>stdcall,external_name=>"DXTRACE_ERR_MSGBOXX";

   pragma Linker_Options("DxErrAdaC.c");



end DxErr;

文件2:DxErrAdaC.c

// File:DxErrAdaC.c
// DxErr for Ada C,for Macro functions
#include <objbase.h>
extern HRESULT WINAPI DXTraceA(const char* strFile,DWORD dwLine,HRESULT hr,const char* strMsg,BOOL bPopMsgBox);

#define DXTRACE_MSG(str)              DXTraceA( __FILE__, (DWORD)__LINE__, 0, str, FALSE)
#define DXTRACE_ERR(str,hr)           DXTraceA( __FILE__, (DWORD)__LINE__, hr, str, FALSE)
#define DXTRACE_ERR_MSGBOX(str,hr)    DXTraceA( __FILE__, (DWORD)__LINE__, hr, str, TRUE)

HRESULT WINAPI DXTRACE_MSGX(const char* str){DXTRACE_MSG(str);}

HRESULT WINAPI DXTRACE_ERRX(const char* str,HRESULT hr){DXTRACE_ERR(str,hr);}

HRESULT WINAPI DXTRACE_ERR_MSGBOXX(const char* str,HRESULT hr){DXTRACE_ERR_MSGBOX(str,hr);}

猜你喜欢

转载自blog.csdn.net/adacore/article/details/83536969
今日推荐