エディットメッセージのテスト          <TOP>


エディットボックスにメッセージ(VBではテキストメッセージ)を送り結果をテキストボックスに表示します。

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

 

エディットボックス(複数行入力有り)に入力した文字列の情報を取得し、テキストボックスに表示します。

 

'================================================================
'= エディットメッセージの確認
'=     (EditBoxMulti.bas)
'================================================================
#include "Windows.bi"

' ウィンドウにメッセージを送信
Declare Function Api_SendMessage& Lib "user32" Alias "SendMessageA" (ByVal hWnd&, ByVal wMsg&, ByVal wParam&, lParam&)

#define EM_CANUNDO &HC6                 'エディットコントロールの操作を取り消せるかどうかを判断する
#define EM_EMPTYUNDOBUFFER &HCD         'エディットコントロールのアンドゥフラグをリセット(クリア)する
#define EM_FMTLINES &HC8                'ソフト改行文字の設定をオンまたはオフにする
#define EM_GETFIRSTVISIBLELINE &HCE     'エディットコントロール内の最初の行のインデックスを取得する
#define EM_GETHANDLE &HBD               'MLE用メモリのハンドルを取得するEM_GETLINEMLEから1行取得する
#define EM_GETLINE &HC4                 '指定行の文字列を取得
#define EM_GETLINECOUNT &HBA            'MLE内の行数を取得する
#define EM_GETMARGINS &HD4              '左右マージンの取得
#define EM_GETMODIFY &HB8               'エディットコントロールの内容が変更されたかどうかをチェックする
#define EM_GETPASSWORDCHAR &HD2         'エディットコントロールのパスワード文字を取得する
#define EM_GETRECT &HB2                 'エディットコントロール長方形の座標を取得する
#define EM_GETSEL &HB0                  'エディットコントロールの現在の選択項目の位置を取得する
#define EM_GETTHUMB &HBE                'スクロールバーの位置を取得
#define EM_GETWORDBREAKPROC &HD1        'エディットコントロールのワードラップ関数を取得する
#define EM_LIMITTEXT &HC5               'エディットコントロール内のテキストの文字数を制限する
#define EM_LINEFROMCHAR &HC9            '文字インデックスから行番号を取得する
#define EM_LINEINDEX &HBB               'MLEの行の文字インデックスを取得する
#define EM_LINELENGTH &HC1              'MLE内の行の長さを取得する
#define EM_LINESCROLL &HB6              'MLE内のテキストをスクロールさせる
#define EM_REPLACESEL &HC2              'エディットコントロール内の現在の選択項目を置き換える
#define EM_SCROLL &HB5                  'MLEを垂直にスクロールさせる
#define EM_SCROLLCARET &HB7             'キャレットをスクロールさせて表示する
#define EM_SETHANDLE &HBC               'MLEのメモリハンドルを設定する
#define EM_SETMARGINS &HD3              '左右マージンの設定
#define EM_SETMODIFY &HB9               'エディットコントロールの変更フラグをセットまたはクリアする
#define EM_SETPASSWORDCHAR &HCC         'エディットコントロールのパスワード文字を設定または削除する
#define EM_SETREADONLY &HCF             'エディットコントロールの読み取り専用スタイルを設定する
#define EM_SETRECT &HB3                 'MLEの書式化長方形を設定する
#define EM_SETRECTNP &HB4               'MLEの書式化長方形を設定する
#define EM_SETSEL &HB1                  'エディットコントロール内部のテキストを選択する
#define EM_SETTABSTOPS &HCB             'MLE内のタブストップを設定する
#define EM_SETWORDBREAKPROC &HD0        'エディットコントロール内で使うカスタムのワードブレーク文字を提供する
#define EM_UNDO &HC7                    'エディットコントロール内での直前の操作を取り消す

Var Shared Edit1 As Object
Var Shared Button1 As Object
Var Shared Text(10) As Object
Var Shared Radio(9) As Object

Edit1.Attach GetDlgItem("Edit1") : Edit1.SetFontSize 14
Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14
For i = 0 To 10
    If i < 10 Then
        Radio(i).Attach GetDlgItem("Radio" & Trim$(Str$(i + 1))) : Radio(i).SetFontSize 14
    End If
    Text(i).Attach GetDlgItem("Text" & Trim$(Str$(i + 1))) : Text(i).SetFontSize 14
Next i

'================================================================
'=
'================================================================
Declare Function Index bdecl () As Integer
Function Index()
    Index = Val(Mid$(GetDlgRadioSelect("Radio1"), 6)) - 1
End Function

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

    Text(0).SetWindowText ""

    Select Case Index
        Case 0    'EM_CANUNDO
            Ret = Api_SendMessage(Edit1.GethWnd, EM_CANUNDO, 0, 0)
            If Ret = 0 Then
                Text(0).SetWindowText "UNDO不可"
            Else
                Text(0).SetWindowText "UNDO可"
            End If

        Case 1    'EM_EMPTYUNDOBUFFER
            Ret = Api_SendMessage(Edit1.GethWnd, EM_EMPTYUNDOBUFFER, 0, 0)

        Case 2    'EM_GETFIRSTVISIBLELINE
            Ret = Api_SendMessage(Edit1.GethWnd, EM_GETFIRSTVISIBLELINE, 0, 0)
            Text(0).SetWindowText "表示最上行:" & Str$(Ret + 1) & "行目"

        Case 3    'EM_GETMODIFY
            Ret = Api_SendMessage(Edit1.GethWnd, EM_GETMODIFY, 0, 0)
            If Ret = 0 Then
                Text(0).SetWindowText "未修正"
            Else
                Text(0).SetWindowText "修正済"
            End If

        Case 4    'EM_SETMODIFY
            Ret = Api_SendMessage(Edit1.GethWnd, EM_SETMODIFY, 0, 0)

        Case 5    'EM_GETSEL
            Ret = Api_SendMessage(Edit1.GethWnd, EM_GETSEL, 0, 0)
            Text(0).SetWindowText "選択開始:" & Str$(Ret Mod (2 ^ 8)) & "〜終了:" & Str$(Int(Ret / (2 ^ 16))) & Chr$(13) & "レングス:" & Str$(Int(Ret / (2 ^ 16)) - Ret Mod (2 ^ 8))

        Case 6    'EM_LINELENGTH
            Ret = Api_SendMessage(Edit1.GethWnd, EM_LINELENGTH, -1, 0)
            Text(0).SetWindowText "行の未選択文字数:" & Str$(Ret)

        Case 7    'EM_SETSEL
            Ret = Api_SendMessage(Edit1.GethWnd, EM_SETSEL, 0, -1)

        Case 8    'EM_UNDO
            Ret = Api_SendMessage(Edit1.GethWnd, EM_UNDO, 0, 0)
            If Ret = 0 Then
                Text(0).SetWindowText "UNDO失敗"
            Else
                Text(0).SetWindowText "UNDO成功"
            End If

        Case 9    'EM_GETLINECOUNT
            Ret = Api_SendMessage(Edit1.GethWnd, EM_GETLINECOUNT, 0, 0)
            Text(0).SetWindowText Str$(Ret) & "行"
    End Select
End Sub

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