それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

C言語の型とWinAPIで使う型のマッピングとRubyのDL/Import

チマチマとWindowsプログラミングを勉強しています。DWORDとか普段馴染みがないから、何度覚えても忘れる。

http://yokohama.cool.ne.jp/chokuto/urawaza/datatype.html から転載させていただいた。

Windowsの型とC言語の型

HMENU メニューハンドル
INT 符号付き整数(int型)
LANGID 言語ID(WORD型/2バイト)
LCID ロケールID(DWORD型/4バイト)
LONG 32ビット符号付き整数(long型)
LONGLONG 64ビット符号付き整数(__int64型/8バイト)
LPARAM 32ビットメッセージパラメータ
LPBOOL/PBOOL BOOL型へのポインタ
LPBYTE/PBYTE BYTE型へのポインタ
LPCSTR/PCSTR 定数ANSI(またはマルチバイト)文字列へのポインタ。(内容が変更されない)
LPCTSTR/PCTSTR ANSI版では定数ANSI(またはマルチバイト)文字列へのポインタ。Unicode版では定数ワイド文字列(Unicode文字列)へのポインタ。(内容が変更されない)
LPCVOID あらゆる型のデータへのポインタ。(内容が変更されない)
LPCWSTR/PCWSTR 定数ワイド文字列(Unicode文字列)へのポインタ。(内容が変更されない)
LPDWORD/PDWORD DWORD型へのポインタ
LPHANDLE/PHANDLE HANDLE型へのポインタ
LPINT/PINT INT型へのポインタ
LPLONG/PLONG LONG型へのポインタ
LPSTR/PSTR ANSI(またはマルチバイト)文字列へのポインタ
LPTSTR/PTSTR ANSI版ではANSI(またはマルチバイト)文字列へのポインタ。 Unicode版ではワイド文字列(Unicode文字列)へのポインタ。
LPVOID/PVOID あらゆる型のデータへのポインタ
LPWORD/PWORD WORD型へのポインタ
LPWSTR/PWSTR ワイド文字列(Unicode文字列)へのポインタ
PBOOLEAN BOOLEAN型へのポインタ
SHORT 16ビット符号付き整数(short型/2バイト)
TCHAR ANSI版ではCHAR型(1バイト)。Unicode版ではWCHAR型(2バイト)。
UINT 符号なし整数(unsigned int型)
ULONG 32ビット符号なし整数(unsigned long型)
ULONGLONG 64ビット符号なし整数(unsigned __int64型/8バイト)
VOID 型なし(void型)。
WCHAR 16ビットワイド文字(Unicode文字)(2バイト)
WORD 16ビット符号なし整数(unsigned short型/2バイト)
WPARAM 32ビットメッセージパラメータ

これら型をRubyから使う

じゃ、WindowsプログラミングをRubyからつかう

require 'dl/import'

modole Win32
  extend DL::Importable
  dlload "user32.dll"
  dlload "kernel32.dll"

  typealias "DWORD","unsigned long"
  

end

のようにtypealiasをするようだ