MultiByteToWideCharの宣言ミス?

返信する


答えを正確に入力してください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: MultiByteToWideCharの宣言ミス?

by イグトランス » 2005年11月19日(土) 00:28

ActiveBasicがというよりもWindowsがUnicodeのエンコードにUTF-16を使用しているので,
それに従っているに過ぎないだけのはずです。

ところでUCS2ではなく,UTF-16なのでサロゲートペアによって4Byteで1文字ということもありえます。

by マティ » 2005年11月18日(金) 23:54

ActiveBasicでサポートするunicodeは2バイト系のみだと理解してよろしいでしょうか?
3バイトとか4バイトの拡張コードもあるようなので、質問しました。

by くま次郎 » 2005年11月18日(金) 07:33

文字列=BytePtrをつかう、という固定観念があったため
勘違いをしてしまったみたいです。

どうも失礼しました。

by イグトランス » 2005年11月16日(水) 20:16

ちなみにVC .NetからはC++の規格どおりにwchar_tを基本型とするオプションが追加されています。

by 山本 » 2005年11月16日(水) 11:20

MultiByteToWideCharは通常のマルチバイト文字をUNICODEに変換する関数です。で、lpWideCharStr パラメータはUNICODE文字列へのポインタ(格納される側です)になります。

UNICODE文字列というのは、一文字が2バイト(Word)で表現されるため、WordPtrが正しい表現ということで大丈夫だと思います。

MultiByteToWideCharの宣言ミス?

by くま次郎 » 2005年11月16日(水) 04:19

MultiByteToWideCharの定義に誤りがあるのではないでしょうか?

AB4.11には "api_system.sbp" にはこう宣言されていますが:

コード: 全て選択

Declare Function MultiByteToWideChar Lib "kernel32" (CodePage As DWord, dwFlags As DWord, lpMultiByteStr As BytePtr, cchMultiByte As Long, lpWideCharStr As WordPtr, cchWideChar As Long) As Long
「lpWideCharStr As WordPtr」は "WordPtr"ではなく
"BytePtr"にするべきではないのでしょうか?

私の勘違いでなかったらごめんなさい。

ページトップ