いつもお世話になります。

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

このQ&Aに関連する最新のQ&A

A 回答 (2件)

画像ファイルをリロードする前に、


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

CWnd::OnEraseBkgnd


afx_msg BOOL OnEraseBkgnd( CDC* pDC );

戻り値
背景を消去する場合は 0 以外を返します。それ以外の場合は 0 を返します。

引数
pDC:デバイス コンテキスト オブジェクトを指定します。

解説:CWnd の背景を消去する必要がある場合 (たとえば、サイズを変更する場合) に、
フレームワークからこのメンバ関数が呼び出されます。
塗りつぶしに無効な領域を用意するために呼び出されます。

と、MSDNにはありますね。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q画面の設定以外で文字の大きさを変更したい場合

こんばんは。WinXPを使っています。
画面のプロパティーから解像度を変更しても、文字の大きさが大きく感じます。WinXPの画面の設定から文字の大きさを変更する場合は解像度を変更しればいいと思うのですが、それでも小さくならない場合はどのようにして文字を小さくする事ができるでしょうか?

Aベストアンサー

解像度以外の手段では
画面のプロパティ→「デザイン」タブ→詳細設定
で、アクティブタイトルバー、パレットタイトル、ヒント、メッセージボックス、メニュー、選択項目、非アクティブタイトルバーの文字の大きさをポイント単位で変更できます。

ブラウザの文字の大きさなら、ブラウズの最中にマウスのスクロールボタンをCtrlボタンを押しながらグリグリすると5段階に変更できます。

ExcelやWordでしたら、ツール→オプション→全般タブから標準の文字の大きさをポイント単位で変更できます。

QVC++5.0とVC++6.0の違いは?

何がどう変わったんでしょうか?
なんとなく使っているだけなのでぜんぜんわかりません。

簡単にんでいいんで思いつくことを書いてもらえるだけでもうれしいです。


よろしくお願いいたします。

Aベストアンサー

MFCのバージョンが違います。MFCのリファレンスを見れば6で増えた機能が分かります。

例えばブラウザを簡単に作れるCHtmlViewは6でないと使えません。

Q「新しいウィンドウで開く」で開く画面の大きさの変更の仕方を教えて下さい。

 恐れ入ります。初歩的な質問で済みません。
検索結果などがたくさん出て、それら一つ一つを右クリックで「新しいウィンドウで開く」をクリックし表示される画面の大きさを変更するにはどうしたら良いのでしょうか?
 ちなみに今は画面の中央に小さく表示されるのですが、目一杯の大きさに変更したいのです。
どうか宜しくお願い致します。

Aベストアンサー

>検索結果などがたくさん出て

タブブラウザを使った方がいいかな~と思います。

IEだと仰る様に一つ一つを右クリックで「新しいウィンドウで開く」をクリック
するのも面倒ですし、下におろすのも面倒です。

タブブラウザなら、画面がウインドウだらけになるうっとうしさも無いですし、
ポップアップも制御できます。

画面の切り替えもタブをクリックするだけですし、たくさんひらいた
ページをまとめて閉じることもできます。

ご存知でしたら失礼しました。

QVC++6.0からVC++.NETへの変遷について

VC++がようやく分かり出したこの頃ですが、今日本屋に立ち寄ったら、なっ なんとVC++の本がほとんど無くなり、代わりにVC++.NETとVC#ばかりになっていました。

C#はVC++とは違うと聞いていたのですが、読んでみるとVC++.NETもかなり違ってました。
(かなり違うという表現は、各人の状況により意見が異なると思いますが)

私のような本を見ながらコードを打って勉強している初心者にとって、VC++.NETの本ではVC++6.0を動かすことができません。

今から勉強する人や本を買って勉強しようとしている人あるいは、コンパイラを手に入れようとしている人はVC++.NETに移行してしまわざるを得ないのでしょうか?

すでにVC++6.0を十分活用出来ている人も、時代の流れでNETやC#を勉強していかなければならないのでしょうか?

つまり、単なるバージョンアップとは一線をなす変更がなされたということなのでしょうか?

良くご存知の方見解をお願いします。

Aベストアンサー

すぐにではありませんが、.NETに移行せざるを得なくなるでしょうね。
ただ、開発環境という面では、VS.NETにはC++が含まれており、C++の部分は
従来のC++も利用できるようになっていて、これはアンマネージC++と呼ばれています。
C++で.NETのコードを作成する時は、マネージC++という拡張仕様で記述します。
また、従来のコードと.NETフレームワーク用コードを混在させてアプリケーションを
開発することもできます。これは、相互運用という形で説明されています。

ということですので、C++で習得したものが無駄になることはありません。
たぶん、.NET環境の開発には、C++よりもC#やVB.NETを利用することが
多くなると思いますが、C++を理解していることはプラスにはなってもマイナスには
なりませんので、頑張って下さい。

.NET関連のサイトを2つご紹介しておきます。ご参考に。
http://www.microsoft.com/japan/msdn/library/default.asp
http://www.atmarkit.co.jp/fdotnet/index.html

すぐにではありませんが、.NETに移行せざるを得なくなるでしょうね。
ただ、開発環境という面では、VS.NETにはC++が含まれており、C++の部分は
従来のC++も利用できるようになっていて、これはアンマネージC++と呼ばれています。
C++で.NETのコードを作成する時は、マネージC++という拡張仕様で記述します。
また、従来のコードと.NETフレームワーク用コードを混在させてアプリケーションを
開発することもできます。これは、相互運用という形で説明されています。

ということですので、C++で習得したもの...続きを読む

QOutlookメールで、画面の文字の大きさを変更するには、どうしたらよ

Outlookメールで、画面の文字の大きさを変更するには、どうしたらよいのですか。

Aベストアンサー

画面の文字の大きさは、
[表示] メニュー → [現在のビュー] → [現在のビューの編集] →
[その他の設定] と [自動書式] の項目でそれぞれフォントの大きさが変更できます。
また、送信メールとテキスト形式の受信メールのフォントの大きさは、
[ツール] メニュー → [メール形式] タブ → [ひな形およびフォント] → [ひな形] タブでそれぞれ変更できます。

Q【VC++6.0(MFC)】スタックメモリサイズの変更方法

いつも大変お世話になっております。
VC++初心者です。

スタックメモリサイズがデフォルトで1Mが設定されているようですが、
それを確認、及び、変更する方法を教えていただけませんでしょうか。
(具体的には、1.0Mから0.5Mにしたいです。)

ちなみに、某サイトで
「プロジェクトのプロパティ→リンカ→システム→スタックのサイズの設定」
で変更可能であるとあったのですが、「プロジェクトのプロパティ」が何を指すのか分かりませんでした。
お手数ですが、よろしくお願いします。

Aベストアンサー

それはおそらくVS2002以降の場合ですね。
VC++6.0では、プロジェクト(メニュー)→設定→リンク(タブ)→アウトプット(ドロップダウンリストボックス)→スタックアロケーション→予約がスタックサイズです。
Debug、Release個別に設定できますので注意してください。

リンカのデフォルト値が使われるので、1MBかどうかの確認はできません。
ですが、普通にVC++のリンカを使っていれば1MBです。
http://msdn.microsoft.com/ja-jp/library/8cxs58a6.aspx

Q最初に表示されるIEの画面の大きさは、変更可能?

こんにちは、みなさん。

インターネットを見る時に、最初に表示される、インターネットエクスプローラーの
画面の大きさは変更できますか??

変更できるなら、どんなやり方ですか??

ご存知の方、いらっしゃいましたら、宜しくお願いします。

Aベストアンサー

IEを起動して始めに表示される画面(ホームページ)の状態で操作します。
マウスを使って表示させたい大きさにIEの全体のウィンドウを変更します。
任意の大きさと位置が決まったら「Shiftキー」を押しながら閉じるボタンをクリックしてIEを終了させます。

※Shiftキーでうまくいかない場合はShiftキーの替わりにCtrlキーを使って試してみてください
※大きさを決めるときは、いつも始めに開いたページでウィドウの大きさ・位置を決めるのがコツです
※IEにい限らず、エクスプローラも同じ要領で変更できます

QMFC VC++ 6.0 使用 

CModel::OnDraw(CDC *pDC)
{
pDC->TextOut(0,0,"OK");
}

というふうに OnDrawの中で pDC->TextOut()と 使って 実行画面に 文字を表示させることは できるのですが、例えば 自分が 追加した 関数

void CModel::On_Distance(){

}

などで、実行画面に 文字をだしたいときは どうすればいいのでしょうか?pDC を 手に入れることが できるのであれば そのほうほう 教えてください。

Aベストアンサー

CWnd::GetDC()
GetDC()で取得したデバイスコンテキストは
使い終わったら必ずReleaseDC()で開放しましょう。

Qようこそ画面アイコン大きさ変更

ようこそ画面でアイコンの大きさを変更したいのですが、どのようにしたらよいでしょうか、
ちなみに以下のレジストリー変更ではダメでした。
HKE_CURRENT_USER→desktoptop→logpixelsで数値の値を変える

Aベストアンサー

変えられないと思います。

Q【VC++6.0(MFC)】メモリの静的、動的割り当ての意味

いつも大変お世話になっています。
VC++初心者です。

大変初歩的な事なのですが、
理解できていないので質問をさせて頂きたいと思います。

new、deleteはメモリを動的に割り当て、開放しるようですが、
この動的とはどういう意味なのでしょうか。
動的があるのなら、静的にメモリ割り当てというものも
あるのでしょうか。
(静的、動的を区別することによって得られる
恩恵とは何なのでしょうか。)
具体的に例を挙げていただけると幸いです。

Aベストアンサー

>> 「確保される場所が違う」、これをもう少し厳密に言うと
>> 「確保されるメモリの場所が違う」という事でしょうか。
>> (例えば、
>> int i;みたいな変数は、Aという範囲のメモリを使いなさい、
>> new を使った変数は、Bという範囲のメモリを使いなさい、
>> というイメージでしょうか。
>> 稚拙な表現ですみません。)

参照URLにも記載されていますが、【int a】で確保した場合、
関数内のauto変数ならスタック領域、static変数やグローバル変数ならば
静的領域に確保されます。

【new】や【malloc】などで確保した場合はヒープ領域に確保されます。


>> >(可変長のCSVファイルを読み込みや、双方向リストなどのデータ構造を作成したい場合)
>> >いきなりデカイローカル変数等などを用意して使いまわしても良いと思いますが、実用的ではありません。
>> この内容を拝見して「何故、実用的でないのか」と疑問に思いました。
>> (確かに、あまり良くないな、感覚的には思うのですが、
>>  論理的には説明できないのです。)
>> つまり、私の挙げた例を使うと、メモリ範囲Bがあるのに、
>> メモリ範囲Aの部分を大量に消費してしまうから、
>> 実用的でないということでしょうか。

まず、関数内で宣言されるauto変数は、大概の処理系ではスタック領域に確保されるため、
コンパイルオプション等にもよりますが、それほど大きな領域を確保できませんし、
大きな領域を確保出来る環境を前提に作ってしまうと、移植性に乏しくなってしまいます。

newやmallocでメモリを動的に確保出来る利点は以下の通りと私個人では判断しております。

(1)配列では面倒なデータの削除や追加が可能なデータ構造を実現できる。
 通常の配列では、途中のデータを追加・削除しようとすると、データのコピー等が発生するなど
 処理が重たくなってしまいます。
 そこで、リスト構造などデータの追加・削除が容易な仕組みを実現することが必要となり、
 自己参照構造体やメモリの動的確保で実現を行います。

(2)例えば、メモリ領域が最大100M確保可能な環境があるとします。
 データaとデータbがあり、それぞれ可変長(0~100M)だが、
 データaとデータbは足して100Mを超えることは無いものとします。
 上記の場合、データa・データbのそれぞれの最大メモリ使用量は100Mのため
 足して200Mの領域を最初に確保したいと思いますが、環境が最大100Mまでしか
 確保できないため、出来ません。
 そこで動的メモリ確保となってくる訳です。


特にオブジェクト指向でプログラムを組むとなると、各タイミングで各種オブジェクトの
生成・消滅が発生します。
それを前提にある程度のオブジェクト数を最初に用意しておく事も可能ですが、コンストラクタや
デストラクタを活かすコードを書こうとした場合、new・delete演算子で生成・消滅させた
方が良いと思います。

私はwindows畑ではありませんが、microsoftのMFCなどもウィンドウやボタンを生成する毎に
それに対応するCButtonクラス等を継承したクラスを生成していたはずです。

以上

>> 「確保される場所が違う」、これをもう少し厳密に言うと
>> 「確保されるメモリの場所が違う」という事でしょうか。
>> (例えば、
>> int i;みたいな変数は、Aという範囲のメモリを使いなさい、
>> new を使った変数は、Bという範囲のメモリを使いなさい、
>> というイメージでしょうか。
>> 稚拙な表現ですみません。)

参照URLにも記載されていますが、【int a】で確保した場合、
関数内のauto変数ならスタック領域、static変数やグローバル変数ならば
静的領域に確保されます。

【new】や【mal...続きを読む


人気Q&Aランキング

おすすめ情報