• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:MFCでウィンドウ枠をアニメーションさせたい)

MFCでウィンドウ枠をアニメーションさせる方法

このQ&Aのポイント
  • VC++初心者の方がMFCでデスクトップマスコットを作成中です。現在、BMP画像の表示はC***ViewクラスのOnDraw関数で行っています。しかし、ウィンドウ枠の作成に問題があり、リージョンを使ってBMP画像の形のウィンドウを作成する方法を知りたいとのことです。また、OnDraw関数内でのSetWindowRgn関数の動作もうまくいっていないそうです。
  • CTestViewクラスのコンストラクタでは、ビットマップの読み込みとリージョンの設定が行われています。OnDraw関数内では、画像の表示とリージョンの切り替えが行われていますが、SetWindowRgn関数が正常に動作していないようです。
  • 質問者さんは、ウィンドウ枠をアニメーションさせたいというニーズを持っています。現在MFCを使用してデスクトップマスコットを作成中で、BMP画像の表示はOnDraw関数で行っていますが、ウィンドウ枠の作成に問題があります。具体的には、リージョンを使ってBMP画像の形のウィンドウを作成する方法が分からないため、質問をしています。また、SetWindowRgn関数の動作もうまくいっていないため、助けが必要だとのことです。

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

  • ベストアンサー
  • akinori_s
  • ベストアンサー率60% (21/35)
回答No.1

参考になるか分かりませんが昔似たようなものを作った時は 下記のようにしました 1.ダイアログベースで作成 2.OnInitDialogでSetWindowRgn/Timer設定 3.OnTimerでSetWindowRgn/リペイント 4.OnPaintで画像の表示 ってな感じでした。 SDIで作る場合にはViewの親ウィンドウのCMainFrameに対してもSetWindowRgnを行わないといけない気がします(自信ないですが・・・) あとOnDraw内でSetWindowRgnを行うのもあまりよくない気がします。

amoban
質問者

お礼

お答えありがとうございます。 あと、お返事が送れて、申し訳ありませんでした(ぺこり)。 SDIだとCMainFrameにもSetWindowRgnしないといけないというのは、 わかるようなきがします。(まだ試していませんが) やはり、ダイアログベースで作成しようかと思います。 それと、あるサンプルソースが手元にありますが、 私がVC++初心者ということもあり、それがダイアログで作られたのかどうか、 確かめるのにどうすればいいのかよくわかりません。 たとえば、「TEST」というプロジェクトで「TESTDLG.CPP」が作られていれば、 ダイアログベースで作成されたと思っていいのでしょうか? あつかましくお尋ねしてすみませんが、 よろしくお願いします。

その他の回答 (1)

  • akinori_s
  • ベストアンサー率60% (21/35)
回答No.2

>たとえば、「TEST」というプロジェクトで「TESTDLG.CPP」が>作られていれば、 >ダイアログベースで作成されたと思っていいのでしょうか? そうとも言えますけど、実際にはCWinApp::InitInstanceで ダイアログクラスを生成/表示していればダイアログベース なんじゃないでしょうか。

amoban
質問者

お礼

お答え、ありがとうございます。 そもそものアプリの構造を把握していないのは致命的ですね(汗)。 MFCの勉強をしつつ、目的のアプリを作れるよう頑張ってみますね。 お答え、本当に参考になりました。 ありがとうございました。

関連するQ&A