• 締切済み

画面のちらつきについて

いつもお世話になります。 VC++6.0MFCダイアログアプリを作成しており、 タイマーイベントで画像をリドローしています。 その時に、画面がちらつくために、対処法を ネットなどで調べてみたのですが、OnEraseBkgnd ってのがあるみたいですけど、使い方がよくわからず、 ソースに反映できないでいます。 OnEraseBkgndでちらつき解消になるかわかりませんが・・・。 ちらつきの対処法をご存知の方ご教授よろしくお願いします。

みんなの回答

  • jun_l
  • ベストアンサー率18% (4/22)
回答No.2

画像ファイルをリロードする前に、 ファイルの情報を調べて、変化があったときにだけ リロードすればどうでしょうか?

  • coolguys
  • ベストアンサー率18% (351/1917)
回答No.1

CWnd::OnEraseBkgnd afx_msg BOOL OnEraseBkgnd( CDC* pDC ); 戻り値 背景を消去する場合は 0 以外を返します。それ以外の場合は 0 を返します。 引数 pDC:デバイス コンテキスト オブジェクトを指定します。 解説:CWnd の背景を消去する必要がある場合 (たとえば、サイズを変更する場合) に、 フレームワークからこのメンバ関数が呼び出されます。 塗りつぶしに無効な領域を用意するために呼び出されます。 と、MSDNにはありますね。

関連するQ&A

  • ボタンが押された時にループから抜けるには

    VC初心者です。 MFCのアプリでダイアログのプロジェクトを作りました。 そこで別のクラスを作成し、無限ループをしているのですが、 ボタンのイベントが発生しません。 どのようにすればボタンのイベントが発生するのでしょうか?

  • Access Violationについて

    VC++6.0 MFCダイアログベースアプリを作成しているものです。 メインダイアログの他に別ダイアログを追加しようと思い、 新規にクラスを追加し、ダイアログを作成しました。 メインダイアログに終了ボタンがあり、押下することにより、 OnClose()を呼び、アプリを終了させています。 ここで、終了ボタンを押すと、以下のメッセージが表示されます。 ハンドルされていない例外は*****にあります。 0xC0000005: Access Violation 新規追加したクラス宣言部をコメントアウトすると、例外が発生しませんでした。 VC初心者でして、このエラーがメモリー関係では?とは想像がつくのですが、 どのようにアプリに影響しているのかがわかりません。 Access Violationが発生した時の対処法とかクラスを新規追加したことによる、 影響範囲がどの程度あるのか等、ご教授願えませんでしょうか? よろしくお願い致します。

  • サンプルソースが実行できない

    VC++2005でMFCダイアログベースのアプリを作成しています。 下記サイトのサンプルソース、 手順1:http://www.g-ishihara.com/mfc_ta_01.htm 手順2:http://www.g-ishihara.com/mfc_ta_02.htm の全く同じ通りに、コーディングし実行してみたのですが、 コンパイルは通りますが、添付ファイルのようなエラーが出てしまい、 exeファイルを実行できません。 手順2の下記コード // 初期表示 if (!err) OnTcnSelchangeTab(0, 0); をコメントアウトしたところ、実行できるようですが。。。 対象ソースが参考URL上にあり大変申し訳ありませんが、 解決法をご存知の方おられましたら、ご教授お願いできませんでしょうか。

  • vc++6.0で過去のソースコードを全て流用

    いつもお世話になっております。 過去にvc++6.0のMFCを利用して作成したダイアログベースのアプリを 次に作ろうとしているアプリに流用したいのですが、方法がわかりません。 現状、過去に作成されたファイル(AAA.cppやAAA.dsp)を全部コピーして ファイル名を変えたり、dspの中身を変更したりしてもうまくいかないです。 簡単に全てのソースコードを流用する方法がありましたら教えて頂けないでしょうか? OSはWinddowsXPを使用しています。 よろしくお願いします。

  • ダイアログ上コントロールの動作について

    MFCでダイアログにて動作するアプリケーションを作成しています。 表示されたダイアログの枠をドラッグすると、ダイアログの大きさが変わりますが、 中にあるコントロールの大きさ・位置は変わりません。 ダイアログの大きさ変更に伴い、コントロールの大きさも変更するには、 どのような実装の仕方をすれば良いのでしょうか? 解決法をご存知の方おられましたら、ご教授お願い致します。 開発環境はVC++2005です。

  • キーボード入力について

    VC++6.0MFCのダイアログベースでデスクトップアプリを作成しています。 現状ですが、まずEscとEnterをクリックすると、 アプリが終了してしまいます。 なぜかわからないのですが、 そもそもキーボード入力を無効にしたいのです。 SetWindowsHookExというAPIを使えばできそうなんですが、 いかんせん、初心者でしてどの部分でどのような記述を すればいいのかがわかりません。 どなたかご教授ください。 よろしくお願いいたします。

  • bmp → jpeg への変換

    こんにちは, VC++6.0 MFC ダイアログベースでソフトを作成しています. そこでbmp画像を読み込んでjpeg画像に変換したいと思っています. プログラム自体は前任者から引き継いだものです. そこではJPEG-6bというオープンソース?を使って変換を行っています. ただ処理速度が遅く,もっと早くしたいと思っています. 他によい(JPEG-6bより高速)変換方法はないでしょうか?

  • 右クリックメニューについて

    VC++2005のMFCでダイアログベースアプリを作成しています。 右クリック動作を行ったタイミングでOnContextMenu関数を呼び出し、処理を行いたいのですが、作成した方法が悪いのか、 (イベントの追加で自動生成する方法が分からず、他ソースのOnContextMenu関数部をコピー) 右クリックしても関数内に入ってくれません。 コンパイルは通っており、コピー元のソースでは検知されているのですが。。。 何か解決法について心当たりのある方おられましたら、お手数ですがご教授お願い致します。 下記は問題箇所のソースです。 【メッセージマップ】 BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) ON_WM_CONTEXTMENU() END_MESSAGE_MAP() 【OnContextMenu関数】 void CTestDlg::OnContextMenu(CWnd* /*pWnd*/, CPoint point ){ AfxMessageBox("右クリック検知しました"); } 【ヘッダ部】 afx_msg void OnContextMenu(CWnd* /*pWnd*/, CPoint point ); ※なお、右クリックする場所はダイアログ上に作成したツリービューの上となっています。

  • ダイアログ画面全体をマウスで動かせるようにするには

    VC++、MFC、WindowsXPです。 現在の状況としてはは ダイアログベースによる作成。 ダイアログにオーナー描画でビットマップを貼り付けている。 という感じです。 普通ウィンドウのタイトルバーをマウスで押してウィンドウの位置を動かしますが、たまに画面のどこを押しても動かせるようなウィンドウがありますが、あれは一体どうやっているのでしょうか? よろしくお願いします。

  • VC++でタスクバーに表示させない方法。(非MFC)

    VC++6.0 で常駐アプリの開発をしているのですが、 MFCを使わずにダイアログを作成し、 タスクトレイにアイコンを表示するのはできたのですが、タスクバーには表示が残ってしまいます。 タスクバーに表示させない方法を教えてください。 よろしくお願いします。

専門家に質問してみよう