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

返信する


答えを正確に入力してください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: EditBox等に、リアルタイムで処理状況を表示したいのですが.

by 雷電 » 2006年8月03日(木) 22:26

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

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

by Anti MS » 2006年8月03日(木) 17:32

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

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

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

by 雷電 » 2006年8月03日(木) 16:13

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

コード: 全て選択

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

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

by Anti MS » 2006年8月03日(木) 15:57

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

ページトップ