ボタン押し続けの質問 – プログラミング – Home

通知
すべてクリア

[解決済] ボタン押し続けの質問


ひめじ
 ひめじ
(@ひめじ)
ゲスト
結合: 18年前
投稿: 2
Topic starter  

VC2003のMFCでの質問です。

ダイアログアプリをつくり1つのピクチャーボックスを張りつけ、
ボタンを押したときにファイルから1レコード読み出しては
ピクチャーボックスにグラフを描画しています。
ボタンを押せば押すほどレコード番号が進んでいき、
グラフが描画されていきます。
このファイルには1秒間隔で収集したデータが入っています。

ここで質問ですが、ボタンを1クリック押す分には毎回描画がされるのですが、
ボタンにカーソルがある状態でエンターキーを押し続けると
ボタンの処理は何度も呼ばれているのですがボタンを離したときにしか描画されません。

ボタンを押した時のプログラムはこんな感じです。
void CTest::OnBnClickedButton1()
{
DrawGraph(); //この中でレコード読込み座標を生成しPictureBoxコントロールに渡す
PictureBox.Invalidate(FALSE);
}

FALSEをTRUEに変えたり
最後にPumpMessageをおいてみたり
Sleepを入れてみたり色々やりましたが
描画がボタンを離したときになります
どうしたら押し続けながら描画させることが出来ますか?


引用未解決
トピックタグ
wclrp ( 'o')
 wclrp ( 'o')
(@wclrp ( 'o'))
ゲスト
結合: 18年前
投稿: 287
 

直に描画をしているわけじゃなくて
CWnd::Invalidateを使用しているなら
キューにウィンドウメッセージが溜まっていないときにしか
WM_PAINTを処理しません。
描画より他の処理を優先にしています。

今その場でWM_PAINTを処理させたいときは
CWnd::UpdateWindowを使う。
これでCWnd::UpdateWindow実行中に
そのウィンドウにWM_PAINTを処理させることになる。


返信引用
ひめじ
 ひめじ
(@ひめじ)
ゲスト
結合: 18年前
投稿: 2
Topic starter  

回答ありがとうございます。

教えていただいたようにUpdateWindowを追加することで
エンター押し付け中にでもちゃんと描画されました。
本当に助かりました。ありがとうございました。

void CTest::OnBnClickedButton1()
{
DrawGraph(); //この中でレコード読込み座標を生成しPictureBoxコントロールに渡す
PictureBox.Invalidate(FALSE);
PictureBox.UpdateWindow();//追加
}


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました