• ベストアンサー

デスクトップへの描画

環境 WIN98 VC++6.0 MFC にて ダイアログベースにて デスクトップにキャラクターを書くために、 BOOL CXXX::OnInitDialog(){ キャラクタのリージョンの作成; キャラクタの描画; //ここでは描画されなかった 略 } としましたが、キャラクタは描画されませんでした。 そこで以下のようにしましたが、キャラクタが書かれる前に、リージョンが先に一瞬見えてしまいます。 このような場合はどうすれば良いのでしょうか? void CAdvancedRgnDlg::OnPaint() { キャラクタの描画; }

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

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

>>リージョンが見えるの意味は? >キャラクターの形をしたウィンドウが見えるということです。 >まだ、キャラクターそのものは描かれていない状態です。 であれば、遅いだけです。 描画ロジックを見直しましょう。 「仮想画面」、「BitBlt」等のキーワードでいろいろ出てくるかも。 >起動時に当然のことながら、キャラクタが最初から現れてほしいのに、 >最初にキャラクタの形をした背景色のウィンドウがチラッと見えます。 参考urlと同じようにダイアログを使用しているのであれば、WM_ERASEBKGNDを処理してしまえばいいのでは? ダイアログの背景の描画処理を省けばいいだけだと思いますけど。

VitaminBB
質問者

お礼

回答ありがとございます。 ようやく対策できました。 BOOL CXXX::OnInitDialog(){ キャラクタのリージョンの作成; キャラクタの描画; //ここでは描画されなかった 略 } 「ここでは描画されなかった」のところで描画すればライムラグは無くなりました。 #最初に描画されなかった原因は、背景を書かないようにしようとして逆にキャラクタの方を書いていませんんでした。

その他の回答 (1)

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

リージョンが見えるの意味は? リージョンはあくまでも描画範囲(やウィンドウの形)を指定するものです。 リージョンの使い方と詳しい状況を。

VitaminBB
質問者

お礼

回答ありがとうございます。 付箋紙PGが完成したので、さて次はと思っていた時に、以前わざわざ検索結果を教えて頂いた中にデスクトップアクセサリなるものがあったことを思いだし見てみました。 デスクトップで猫が動いたりしてなかなか面白かったので、自分でも作ってみようと思いました。 そこでまず以下サイトを参考に始めました。 http://plaza2.mbn.or.jp/~yoshio2/vcmemo4-1.html

VitaminBB
質問者

補足

>リージョンが見えるの意味は? キャラクターの形をしたウィンドウが見えるということです。 まだ、キャラクターそのものは描かれていない状態です。 >リージョンの使い方と詳しい状況を。 お礼に書いた参考サイトそのものです。 起動時に当然のことながら、キャラクタが最初から現れてほしいのに、最初にキャラクタの形をした背景色のウィンドウがチラッと見えます。

関連するQ&A