エディットメッセージのテスト <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