次のような簡単なプログラムをRADツールを使って作ったとします。
Dim i As Long
For i=1 To 10000
SetWindowText(GetDlgItem(hMainWnd,Static1),Str$(i))
Next
SetWindowText(GetDlgItem(hMainWnd,Static1),"終了")
これを実行している最中に、一旦他のアプリケーション(例えばエクスプローラ)をアクティブにしたり、このプログラムのウィンドウを移動させたりすると、カウンタの表示が更新されなくなったり、ウィンドウが白くなったりするのを回避する方法はないでしょうか?
ループが終了すれば、正常なウィンドウに戻ります。
初心者なので、バカな質問をしているかもしれません。
UpdateWindowやInvalidateRect, RedrawWindow, Sleep等を試してみましたがダメでした。せっかく作ったカウンタやプログレスバーが意味をなさず困っています。お助け下さい。
Windowの更新について
別スレッドで動かす という方法があります。
コード: 全て選択
Dim flag As Long
Sub MainWnd_CommandButton1_Click()
if flag=1 then Exit Sub
flag=1
CreateThread(ByVal 0,0,AddressOf(CountUp),0,0,0)
End Sub
Sub CountUp()
Dim i As Long
For i=1 To 10000
SetWindowText(GetDlgItem(hMainWnd,Static1),Str$(i))
Next
SetWindowText(GetDlgItem(hMainWnd,Static1),"終了")
flag=0
End Sub
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。
に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
ここ以外の場所では「暇人13世」というHNを主として使用。
に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。