by イグトランス » 2007年2月19日(月) 00:33
現在のABでは宣言がなかったり言語仕様からの支援がないため使い辛いですが,Windows NTは本来全ての文字に関わる処理をUnicode (UTF-16 LE)で処理しており,API関数もUnicodeを引数に取るものが用意されています。
ただしWindows 9xがUnicode対応でないことないのが問題です。しかし例外的にごく少数の関数だけが9xでもUnicode版も実装されています。
http://support.microsoft.com/kb/210341/en
とりあえず表示に関しては,MessageBoxとTextOutが比較的簡単に使えるでしょう。
コード: 全て選択
Declare Function TextOutW Lib "gdi32" (hdc As HDC, nXStart As Long, nYStart As Long, pString As *WCHAR, cbString As Long) As BOOL
Declare Function MessageBoxW Lib "user32" (hwnd As HWND, pText As *WCHAR, pCaption As *WCHAR, uType As DWord) As Long
ほかにはリッチエディットやIEコンポーネントをUnicode表示に使うことができます。
ABでは今のところUTF-16の文字を扱う型としてWCHARがあります(WordのTypeDefですが)。
UTF-16文字列ではByte配列の代わりにWCHAR配列として扱えばよいです。
#ちなみにAB5ではStringをUnicode (UTF-16)化しようかという案も出ています。
現在のABでは宣言がなかったり言語仕様からの支援がないため使い辛いですが,Windows NTは本来全ての文字に関わる処理をUnicode (UTF-16 LE)で処理しており,API関数もUnicodeを引数に取るものが用意されています。
ただしWindows 9xがUnicode対応でないことないのが問題です。しかし例外的にごく少数の関数だけが9xでもUnicode版も実装されています。
http://support.microsoft.com/kb/210341/en
とりあえず表示に関しては,MessageBoxとTextOutが比較的簡単に使えるでしょう。
[code]Declare Function TextOutW Lib "gdi32" (hdc As HDC, nXStart As Long, nYStart As Long, pString As *WCHAR, cbString As Long) As BOOL
Declare Function MessageBoxW Lib "user32" (hwnd As HWND, pText As *WCHAR, pCaption As *WCHAR, uType As DWord) As Long[/code]
ほかにはリッチエディットやIEコンポーネントをUnicode表示に使うことができます。
ABでは今のところUTF-16の文字を扱う型としてWCHARがあります(WordのTypeDefですが)。
UTF-16文字列ではByte配列の代わりにWCHAR配列として扱えばよいです。
#ちなみにAB5ではStringをUnicode (UTF-16)化しようかという案も出ています。