コンボボックスの文字数制限 <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