数字入力専用 <TOP>
数字のみ入力できます。EditBoxプロパティで数字のみを「あり」に設定した場合と同じですが・・
SetWindowLong 指定されたウィンドウの属性を変更
GetWindowLong 指定されたウィンドウに関しての情報を取得
例では、EditBoxプロパティで数字のみを「なし」に設定し、APIで制御しています。
左:ES_LEFT(デフォルト) 中:ES_CENTER 右:ES_RIGHT
'================================================================ '= 数字入力専用
'= (NumInput.bas) '================================================================ #include "Windows.bi" ' 指定されたウィンドウの属性を変更。また、拡張ウィンドウメモリの指定されたオフセットの32ビット値を書き換えることができる Declare Function Api_SetWindowLong& Lib "user32" Alias "SetWindowLongA" (ByVal hWnd&, ByVal nIndex&, ByVal dwNewLong&) ' 指定されたウィンドウに関しての情報を取得。また、拡張ウィンドウメモリから、指定されたオフセットにある32ビット値を取得することもできる Declare Function Api_GetWindowLong& Lib "user32" Alias "GetWindowLongA" (ByVal hWnd&, ByVal nIndex&) #define GWL_STYLE -16 'アプリケーションのインスタンスハンドル #define ES_LEFT 0 'テキストを左揃えする(デフォルト) #define ES_CENTER 1 'テキストを水平方向で中央に表示する #define ES_RIGHT 2 'テキストを右揃えする #define ES_NUMBER &H2000 '数値入力専用にする Var Shared Edit1 As Object
Edit1.Attach GetDlgItem("Edit1") : Edit1.SetFontSize 14
'================================================================
'=
'================================================================
Declare Sub MainForm_Start edecl ()
Sub MainForm_Start()
Var Ret As Long
Ret = Api_GetWindowLong(Edit1.GethWnd, GWL_STYLE)
Ret = Api_SetWindowLong(Edit1.GethWnd, GWL_STYLE, Ret Or ES_NUMBER Or ES_RIGHT)
Edit1.SetFocus
End Sub
'================================================================
'=
'================================================================
While 1
WaitEvent
Wend
Stop
End