エディットボックスの属性を変更 <TOP>
GetWindowLong 指定されたウィンドウに関しての情報を取得
SetWindowLong 指定されたウィンドウの属性を変更
SendMessage ウィンドウにメッセージを送信
例では、エディットボックスの入力時に大文字での入力・小文字での入力・数字のみの入力を切り替えます。
参照
'================================================================ '= エディットボックスの属性を変更
'= (SetWindowLong2.bas) '================================================================ #include "Windows.bi" ' 指定されたウィンドウに関しての情報を取得 Declare Function Api_GetWindowLong& Lib "user32" Alias "GetWindowLongA" (ByVal hWnd&, ByVal nIndex&) ' 指定されたウィンドウの属性を変更 Declare Function Api_SetWindowLong& Lib "user32" Alias "SetWindowLongA" (ByVal hWnd&, ByVal nIndex&, ByVal dwNewLong&) ' ウィンドウにメッセージを送信 Declare Function Api_SendMessage& Lib "user32" Alias "SendMessageA" (ByVal hWnd&, ByVal wMsg&, ByVal wParam&, lParam As Any) #define GWL_STYLE -16 'アプリケーションのインスタンスハンドル #define ES_LOWERCASE &H10 '入力文字を小文字にする #define ES_NUMBER &H2000 '数値入力専用にする #define ES_UPPERCASE 8 '入力文字を大文字にする #define EM_SCROLLCARET &HB7 'キャレットをスクロールさせて表示す #define EM_SETREADONLY &HCF 'エディットコントロールの読み取り専用スタイルを設定する #define EM_SETSEL &HB1 'エディットコントロール内部のテキストを選択する #define EM_UNDO &HC7 'エディットコントロール内での直前の操作を取り消す Var Shared Edit1 As Object Var Shared Radio(3) As Object Var Shared Check1 As Object Var Shared Group(1) As Object Var Shared Button(1) As Object Edit1.Attach GetDlgItem("Edit1") : Edit1.SetFontSize 14 For i = 0 To 3 If i < 2 Then Group(i).Attach GetDlgItem("Group" & Trim$(Str$(i + 1))) : Group(i).SetFontSize 14 Button(i).Attach GetDlgItem("Button" & Trim$(Str$(i + 1))) : Button(i).SetFontSize 14 End If Radio(i).Attach GetDlgItem("Radio" & Trim$(Str$(i + 1))) : Radio(i).SetFontSize 14 Next Check1.Attach GetDlgItem("Check1") : CHeck1.SetFontSize 14 Var Shared defstyle As Long '================================================================ '= '================================================================ Declare Function Index bdecl () As Integer Function Index() Index = Val(Mid$(GetDlgRadioSelect("Radio1"), 6)) - 1 End Function '================================================================ '= '================================================================ Declare Sub MainForm_Start edecl () Sub MainForm_Start() defstyle = Api_GetWindowLong(Edit1.GethWnd, GWL_STYLE) ShowWindow -1 End Sub '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var Ret As Long Ret = Api_SendMessage(Edit1.GethWnd, EM_UNDO, 0, ByVal 0) Edit1.SetFocus End Sub '================================================================ '= '================================================================ Declare Sub Button2_on edecl () Sub Button2_on() Var Ret As Long Ret = Api_SendMessage(Edit1.GethWnd, EM_SCROLLCARET, 0, ByVal 0) Edit1.SetFocus End Sub '================================================================ '= '================================================================ Declare Sub RadioSel() Sub RadioSel() Var Ret As Long Ret = Api_SetWindowLong(Edit1.GethWnd, GWL_STYLE, defstyle) Select Case index Case 0 '通常 Case 1 '数字のみ(ES_NUMBER) Ret = Api_SetWindowLong(Edit1.GethWnd, GWL_STYLE, defstyle Or ES_NUMBER) Case 2 '大文字(ES_UPPERCASE) Ret = Api_SetWindowLong(Edit1.GethWnd, GWL_STYLE, defstyle Or ES_UPPERCASE) Case 3 '小文字(ES_LOWERCASE) Ret = Api_SetWindowLong(Edit1.GethWnd, GWL_STYLE, defstyle Or ES_LOWERCASE) End Select Edit1.SetFocus End Sub '================================================================ '= '================================================================ Declare Sub Check1_on edecl () Sub Check1_on() Var state As Long Var Ret As Long state = Check1.GetCheck Ret = Api_SendMessage(Edit1.GethWnd, EM_SETREADONLY, state, ByVal 0) Edit1.SetFocus End Sub '================================================================ '= '================================================================ Declare Sub Radio1_on edecl () Sub Radio1_on() RadioSel End Sub '================================================================ '= '================================================================ Declare Sub Radio2_on edecl () Sub Radio2_on() RadioSel End Sub '================================================================ '= '================================================================ Declare Sub Radio3_on edecl () Sub Radio3_on() RadioSel End Sub '================================================================ '= '================================================================ Declare Sub Radio4_on edecl () Sub Radio4_on() RadioSel End Sub '================================================================ '= '================================================================ Declare Sub MainForm_QueryClose edecl () Sub MainForm_QueryClose() End End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End