数字入力専用          <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