(UTF-8で書かれたrubyソースコードでUNICODE版のWin32APIを呼び出す)
とりあえず、メッセージボックスを表示させる例
ソースがUTF-8なのでそのまま文字を表示させようとすると文字化けする
今回は「.encode!」としてますけど「.encode」でも大丈夫です
ソースが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」でも大丈夫です