以下のように、リアルタイムでEditBoxに文字列を表示しようとした所、
SetWindowTextは、残念ながら、毎回先頭に書き出すことがわかりました。
(Editのプロパティの"複数行"にはチェックしておきましたが、Setと冠されている
関数なので、駄目そうな気もしていたのですが...^^; )
「スクロールバーのあるEditBoxの様なコントロールに、プログラムの処理の進行状況を、リアルタイムで表示し、所定の履歴がたまったら古い順に履歴を少しずつ削除する」
こんな事をするには、どんな関数を使ってにコーディングしたら良いのか、どなたかアドバイスをお願い致します。
----------- 以下、失敗作 --------------
Dim hEditBox1 As HWND
Dim dum As String
dum="リアルタイムで表示"+Chr$(13)+Chr$(10)+"したい"+Chr$(13)+Chr$(10)
hEditBox1=GetDlgItem(hMainWnd,EditBox1)
SetWindowText(hEditBox1,dum)
SetWindowText(hEditBox1,"二行目の表示")
SetWindowText(hEditBox1,"三行目の表示")
・・・・・・・・・・
・・・・・・・・・・
EditBox等に、リアルタイムで処理状況を表示したいのですが.
前にそのようなことを質問したので関数だけ紹介しておきます。
この関数は最後尾に文字列が追加されるようになっている関数です。
といっても私が作ったものではありませんが、
これは7さんが作られた関数です。
回答にはなりませんが、参考にしていただく程度で結構です。
コード: 全て選択
Sub AddEditBoxText(ByVal hDlg As HWND,ByVal nIDDlgItem As Long,ByVal lpString As BytePtr)
Dim hEdit As HWND
hEdit=GetDlgItem(hDlg,nIDDlgItem)
SendMessage(hEdit,EM_SETSEL,GetWindowTextLength(hEdit),-1)
SendMessage(hEdit,EM_REPLACESEL,TRUE,lpString As LPARAM)
SetFocus(hEdit)
End Sub
Sub MainWnd_CommandButton1_Click()
AddEditBoxText(hMainWnd,EditBox1,"追加する文字")
End Sub
といっても私が作ったものではありませんが、
これは7さんが作られた関数です。
回答にはなりませんが、参考にしていただく程度で結構です。
Re:EditBox等に、リアルタイムで処理状況を表示したいの
雷電さん。大変ありがとうございました。ご紹介戴いたコードは完璧でした。
実のところ、SendMessageの存在自体は知っていたのですが、ヘルプに示されている各パラメータの意味が全く理解できず試してもいませんでした。
もっとも、試していたところで、私にはこんなコードはとても無理でしたが...^^;
今後ともよろしくお願い致します。
実のところ、SendMessageの存在自体は知っていたのですが、ヘルプに示されている各パラメータの意味が全く理解できず試してもいませんでした。
もっとも、試していたところで、私にはこんなコードはとても無理でしたが...^^;
今後ともよろしくお願い致します。