入力する文字数の制限         <TOP>


入力する文字数を制限します。F-BASICのSETLIMITTEXTと同じです。

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

CB_LIMITTEXT(&H141) コンボボックスのエディットコントロール内のテキストの文字数を制限する
EM_LIMITTEXT(&HC5) エディットコントロール内のテキストの文字数を制限する
 

リミットに制限する文字数を入力し「制限」ボタンをクリック後、EditBoxまたはComboBoxに文字を入力しています。「解除」ボタンでデフォルトに設定されます。

5文字に制限例

15文字に制限例

 

'================================================================
'= 入力する文字数の制限
'=    (LIMITTEXT.bas)
'================================================================
#include "Windows.bi"

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

' ウィンドウにメッセージを送信。この関数は、指定したウィンドウのウィンドウプロシージャが処理を終了するまで制御を返さない
Declare Function Api_SendMessage& Lib "user32" Alias "SendMessageA" (ByVal hWnd&, ByVal wMsg&, ByVal wParam&, lParam As Any)

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

Var Shared Text1 As Object
Var Shared Combo1 As Object
Var Shared Edit(1) As Object
Var Shared Button(1) As Object

Text1.Attach GetDlgItem("Text1") : Text1.SetFontSize 14
Combo1.Attach GetDlgItem("Combo1") : Combo1.SetFontSize 14
For i = 0 To 1
    Edit(i).Attach GetDlgItem("Edit" & Trim$(Str$(i + 1))) : Edit(i).SetFontSize 14
    Button(i).Attach GetDlgItem("Button" & Trim$(Str$(i + 1))) : Button(i).SetFontSize 14
Next i

'================================================================
'=
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
    Var maxTxtLen As Long
    Var Ret As Long
   
    'リミット文字数取得
    maxTxtLen = CLng(val(Edit(1).GetWindowText))
   
    'テキストクリア
    Ret = Api_SetWindowText(Edit(0).GethWnd, "")
    Ret = Api_SetWindowText(Combo1.GethWnd, "")

    'リミット設定
    Ret = Api_SendMessage(Edit(0).GethWnd, EM_LIMITTEXT, maxTxtLen, ByVal 0)
    Ret = Api_SendMessage(Combo1.GethWnd, CB_LIMITTEXT, maxTxtLen, ByVal 0)
End Sub

'================================================================
'=
'================================================================
Declare Sub Button2_on edecl ()
Sub Button2_on()
    Var Ret As Long

    'テキストクリア
    Ret = Api_SetWindowText(Edit(0).GethWnd, "")
    Ret = Api_SetWindowText(Edit(1).GethWnd, "")
    Ret = Api_SetWindowText(Combo1.GethWnd, "")

    'リセット
    Ret = Api_SendMessage(Edit(0).GethWnd, EM_LIMITTEXT, 0, ByVal 0)
    Ret = Api_SendMessage(Combo1.GethWnd, CB_LIMITTEXT, 0, ByVal 0)
End Sub

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