タイトル | : Re: InputManのimTextについて |
記事No | : 15324 |
投稿日 | : 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
|