> 教えてくださった「取得→加工→設定」の方法は出来そうです。
> SendMessageW API での方法とはどのようなものなのでしょうか?
> どちらかに絞っていこうと思います。
基本的にWIN32APIはANSI文字用とUNICODE文字用の2つが用意されています。
一般にANSI系の文字列では全角文字は2Byteなので単純に文字列をエディットボックスから取得して1文字消すと文字化けする恐れがあります。そこで文字列を最初から2Byte区切りで操作して文字化けを防ごうということです。手順は全く同じです。
コード: 全て選択
Declare Function SendMessageW Lib "user32" Alias "SendMessageW" (hWnd As HWND, wMsg As DWord, wParam As DWord, lParam As DWord) As Long
文字列操作は下のAPIを使えばよいでしょう。
コード: 全て選択
Declare Function lstrcatW Lib "kernel32" Alias "lstrcatW" (lpString1 As WordPtr, lpString2 As WordPtr) As WordPtr
Declare Function lstrcmpW Lib "kernel32" Alias "lstrcmpW" (lpString1 As WordPtr, lpString2 As WordPtr) As Long
Declare Function lstrcmpiW Lib "kernel32" Alias "lstrcmpiW" (lpString1 As WordPtr, lpString2 As WordPtr) As Long
Declare Function lstrcpyW Lib "kernel32" Alias "lstrcpyW" (lpString1 As WordPtr, lpString2 As WordPtr) As WordPtr
Declare Function lstrlenW Lib "kernel32" Alias "lstrlenW" (lpString As WordPtr) As Long
見て分かるようにこれらのAPIはByte配列ではなくWord配列を使用します。
String型とは互換性が無いので注意する必要があります。