コンボボックスの文字数制限          <TOP>


コンボボックスの入力文字数を制限します。(プロパティ:ドロップダウン)

SendMessage ウィンドウにメッセージを送信

FindWindowEx クラス名、キャプションを与えてウィンドウのハンドルを取得

SetWindowText ウィンドウのタイトルを変更

 

 

'================================================================
'= コンボボックスの文字数制限
'================================================================
#include "Windows.bi"

' ウィンドウにメッセージを送信
Declare Function Api_SendMessage& Lib "user32" Alias "SendMessageA" (ByVal hWnd&, ByVal wMsg&, ByVal wParam&, lParam As Any)

' クラス名 、または キャプションを与えてウィンドウのハンドルを取得
Declare Function Api_FindWindowEx& Lib "user32" Alias "FindWindowExA" (ByVal hWndParent&, ByVal hWndChildAfter&, ByVal lpszClass$, ByVal lpszWindow$)

' ウィンドウのタイトルを変更
Declare Function Api_SetWindowText& Lib "user32" Alias "SetWindowTextA" (ByVal hWnd&, ByVal lpString$)

#define EM_LIMITTEXT &HC5               'エディットコントロール内のテキストの文字数を制限する

Var Shared Combo1 As Object
Var Shared Edit1 As Object
Var Shared Text1 As Object
Var Shared Button1 As Object

Combo1.Attach GetDlgItem("Combo1") : Combo1.SetFontSize 14
Edit1.Attach GetDlgItem("Edit1") : Edit1.SetFontSize 14
Text1.Attach GetDlgItem("Text1") : Text1.SetFontSize 14
Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14

'================================================================
'=
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
    Var hWnd As Long
    Var mLen As Long
    Var Ret As Long

    hWnd = Api_FindWindowEx(Combo1.GethWnd, 0, ByVal 0, ByVal 0)
    mLen = Val(Edit1.GetWindowText)

    If hWnd <> 0 Then
        If mLen > 0 Then
            Ret = Api_SetWindowText(hWnd, "")
            Ret = Api_SendMessage(hWnd, EM_LIMITTEXT, mLen, 0)
        Else
            Ret = Api_SendMessage(hWnd, EM_LIMITTEXT, 0, 0)
        End If
    End If

    Ret = Api_SetWindowText(GethWnd, Trim$(Str$(mLen)) & "文字に制限")
End Sub

'================================================================
'=
'================================================================
While 1
    WaitEvent
Wend
Stop
End