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);}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值