• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:リソースの低減について)

リソースの低減について

このQ&Aのポイント
  • デスクトップ上で猫を動かす方法について環境WIN98 VC++6.0 MFCにて、参考サイトを元に絵を切り替えて動かしましたが、リソースがどんどん減っていく問題が発生しました。
  • リソースメーターで確認したところ、deleteしても改善されないことがわかりました。どのような対処方法があるでしょうか?
  • これにより、リソースの低減についての解決策を探しています。

質問者が選んだベストアンサー

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

で、参考urlを見ました。 >PGを起動しウィンドウズのリソースメーターで見てみると、どんどんリソースが減っていきます。 ここのソースをそのままタイマーで呼び出して、画面の形状の切り替えに使うと、C++として基本的なところがまずいです。 newで作成したインスタンスのdeleteが行われていません。 >タイマーで >猫1用リージョン作成+猫1用絵のロード >猫2用リージョン作成+猫2用絵のロード >を繰り返しました。 ちなみに、こういうときは、リージョンはあらかじめ2つ作成しておき、タイマーでは作成しておいたリージョンをコピーし、それをウィンドウに設定するのが普通です。 また、ビットマップのロードも、タイマーで毎回行う必要もありません。 あらかじめロードしておいて、タイマーでは描画するだけでいいんですから。 理由は、リージョンの作成も、ビットマップのロードも時間がかかるからです。 このサンプルがOnInitDialogですべての処理を行っている理由を考えてくださいね。 ウィンドウの形状がOnInitDialog以降変化しないからこれでもかまわないんです。

VitaminBB
質問者

お礼

回答ありがとうございます。 >newで作成したインスタンスのdeleteが行われていません。 質問後に気がついてdeleteしてみましたが、現象は改善されませんでした。 >理由は、リージョンの作成も、ビットマップのロードも時 >間がかかるからです。 初めてのことでよく分からなかったので、 1.初めに作成すると画像データが多い場合はメモリを消費するんじゃないかと思いました。 2.後で作成すると処理時間がかかり動作が遅くなるのではと思いました。 それで今回はパターン2でやってみました。 >このサンプルがOnInitDialogですべての処理を行ってい >る理由を考えてくださいね。 >ウィンドウの形状がOnInitDialog以降変化しないからこ >れでもかまわないんです。 起動後にウィンドウの形を変える場合も想定して、何とか今回の場合の不具合を直したいと思いました。 #実はいろいろいじっていたら、リソース減少は直ってしまいました。 前のコードと比較して何が功を奏したのか調べてみます。

VitaminBB
質問者

補足

CDC *pDC, tempDC9;と宣言していたのを以下のように分けたら直ってしまいました。理由はわかりません。 *************************   //CDC *pDC, tempDC9;  //■コメントアウト   CDC *pDC;  //■変更   CBitmap m_p9[2];   pDC = GetDC();   CDC tempDC9;  //■変更   tempDC9.CreateCompatibleDC(NULL);   m_p9[0].LoadBitmap(IDB_BITMAP1);   m_p9[1].LoadBitmap(IDB_BITMAP2);

その他の回答 (1)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

>CRgn* m_rDone; ポインタのようですが、実体は? >DeleteObject(*m_rDone); MFCのクラスのインスタンスをなぜWinAPIで解放? ということで、これだけでは分かりません。

VitaminBB
質問者

お礼

回答ありがとうございます。 今回はオブジェクトの破棄が分かっていないことを痛感してます。

関連するQ&A