(UTF-8で書かれたrubyソースコードでUNICODE版のWin32APIを呼び出す)

とりあえず、メッセージボックスを表示させる例
ソースがUTF-8なのでそのまま文字を表示させようとすると文字化けする
#!/usr/local/bin/ruby -Ku

require 'fiddle/import'

module Win32api
	extend(Fiddle::Importer)
	dlload('user32.dll')
	extern('int MessageBoxW(int, char*, char*, int)')
	MB_OK          = 0
	MB_OKCANCEL    = 1
	MB_YESNOCANCEL = 3
	MB_YESNO       = 4
end

puts(
	Win32api.MessageBoxW(
		0,
		'こんにちは'.encode!('UTF-16LE'),
		'test'.encode!('UTF-16LE'),
		Win32api::MB_YESNO
	)
)
# メッセージボックスの戻り値
#define IDOK      1
#define IDCANCEL  2
#define IDABORT   3
#define IDRETRY   4
#define IDIGNORE  5
#define IDYES     6
#define IDNO      7
ポイントは UTF-16LEでエンコードする事
今回は「.encode!」としてますけど「.encode」でも大丈夫です