EditBox等に、リアルタイムで処理状況を表示したいのですが.

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
Anti MS

EditBox等に、リアルタイムで処理状況を表示したいのですが.

#1 投稿記事 by Anti MS »

 以下のように、リアルタイムで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,"三行目の表示")
 ・・・・・・・・・・
 ・・・・・・・・・・
雷電

#2 投稿記事 by 雷電 »

前にそのようなことを質問したので関数だけ紹介しておきます。

コード: 全て選択

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さんが作られた関数です。
回答にはなりませんが、参考にしていただく程度で結構です。
Anti MS

Re:EditBox等に、リアルタイムで処理状況を表示したいの

#3 投稿記事 by Anti MS »

 雷電さん。大変ありがとうございました。ご紹介戴いたコードは完璧でした。

実のところ、SendMessageの存在自体は知っていたのですが、ヘルプに示されている各パラメータの意味が全く理解できず試してもいませんでした。
もっとも、試していたところで、私にはこんなコードはとても無理でしたが...^^;

                                        今後ともよろしくお願い致します。
雷電

#4 投稿記事 by 雷電 »

SendMessage関数ですか。
初め私も結構難儀したものです。
しかし、一度覚えてしまえば簡単です。
パラメータは送るメッセージコードによって違ってくるので、その辺がやはり難しいというか、理解しにくいんでしょうか?
返信する