Hello, Win32 API(D言語) World!
Posted on 5月 4th, 2012 by cx20
Win32 API(D言語)
Win32 API は、Windows の機能にアクセスする為の API(Application Programming Interface)である。
以下は D言語 からの呼出し例である。
D言語では、Platform SDK のヘッダファイル相当のものがプロトタイプ宣言されている為、基本的な Win32 API であれば、C/C++ の場合と同様に、呼び出すことが可能となっている。
ソースコード
import std.c.windows.windows;
int main( char[][] args )
{
MessageBoxA( null, "Hello, Win32 API(D) World!", "Hello, World!", MB_OK );
return 0;
} |
import std.c.windows.windows;
int main( char[][] args )
{
MessageBoxA( null, "Hello, Win32 API(D) World!", "Hello, World!", MB_OK );
return 0;
}
Win32 API のプロトタイプ宣言(参考)
extern (Windows)
{
:
int MessageBoxA(HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType);
int MessageBoxW(HWND hWnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT uType);
:
} |
extern (Windows)
{
:
int MessageBoxA(HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType);
int MessageBoxW(HWND hWnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT uType);
:
}
また、Win32 データ型に関しても、同じ名前の型が、D言語用に定義されている為、特段、言語の差異を意識することなく使うことが可能となっている。
| Win32 データ型 |
C/C++ データ型 |
D言語データ型 |
| HANDLE |
void * |
void * |
| BYTE |
unsigned char |
ubyte |
| SHORT |
short |
short |
| WORD |
unsigned short |
ushort |
| INT |
int |
int |
| UINT |
unsigned int |
uint |
| LONG |
long |
int |
| BOOL |
int |
int |
| DWORD |
unsigned long |
uint |
| ULONG |
unsigned long |
uint |
| CHAR |
char |
char |
| WCHAR |
wchar_t |
wchar |
| LPSTR |
char * |
char * |
| LPCSTR |
const char * |
const(char) * |
| LPWSTR |
wchar_t * |
wchar * |
| LPCWSTR |
const wchar_t * |
const(wchar) * |
| FLOAT |
float |
float |
| DOUBLE |
double |
double |
| LONGLONG |
__int64 |
long |
| DWORD64 |
unsigned __int64 |
ulong |
コンパイル方法(Digital Mars D コンパイラ)
実行結果
---------------------------
Hello, World!
---------------------------
Hello, Win32 API(D) World!
---------------------------
OK
--------------------------- |
---------------------------
Hello, World!
---------------------------
Hello, Win32 API(D) World!
---------------------------
OK
---------------------------
Tags: Win32 API
Categories: D言語, library, Win32 API