タイトル : Re: InputManのimTextについて 投稿日 : 2011/08/29(Mon) 16:23 投稿者 : 魔界の仮面弁士
> imTextをマルチラインで使った時、 普通のテキストボックスであれば、EM_SETWORDBREAKPROC メッセージで 禁則処理を制御できますが… InputMan に該当機能があるかどうかは分かりません。 メーカーに問い合わせてみては如何でしょう。 参考までに、普通の TextBox の場合: '---- Form1 ---- Option Explicit Private Sub Form_Load() Text1.Text = "" SetWordbreakProc Text1 Text1.Text = "あああaaaaaaaaaa" End Sub '---- Module1 ---- Option Explicit Private Const EM_SETWORDBREAKPROC = &HD0& Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _ (ByVal hWnd As OLE_HANDLE, ByVal wMsg As Long, _ ByVal wParam As Long, ByVal lParam As Long) As Long Public Enum WordBreak WB_LEFT = 0 WB_RIGHT = 1 WB_ISDELIMITER = 2 WB_CLASSIFY = 3 WB_MOVEWORDLEFT = 4 WB_MOVEWORDRIGHT = 5 WB_LEFTBREAK = 6 WB_RIGHTBREAK = 7 End Enum 'Private Declare Function SysAllocStringByteLen Lib "oleaut32" _ ' (ByVal psz As Long, ByVal length As Long) As String Public Sub SetWordbreakProc(ByVal txt As TextBox) Const EM_SETWORDBREAKPROC As Long = &HD0& SendMessage txt.hWnd, EM_SETWORDBREAKPROC, 0&, AddressOf EditWordBreakProc End Sub '単語の区切り位置をカスタマイズするためのコールバックプロシージャ Public Function EditWordBreakProc( _ ByVal lpch As Long, _ ByVal charCurrent As Long, _ ByVal charLength As Long, _ ByVal action As WordBreak) As Long 'Debug.Print charCurrent, action, "["; SysAllocStringByteLen(lpch, charLength); "]" '戻り値 0 は「区切り文字でない」の意味 EditWordBreakProc = 0 End Function |