tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル 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

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。