ショートカットキーで画面をキャプチャーする

[戻る]
宮崎県 2001/11/12(月) 14:59:46
はじめまして宮崎県です。OSはWindowsNTです。
VC++6.0 MFCを使って、SDIのプログラムを作っています。

あるショートカットを押すとディスクトップの全画面をキャプチャーする
プログラムを考えています。

アクセラレータで任意のショートカットキーにIDを設定して、viewクラス
で、メッセージを[command]に設定して、関数を追加しました。

プログラムは、色々なサイトや本を参考にして作りました。
void CXxxxView::Onxxxxx() 
{
    // TODO: この位置にコマンド ハンドラ用のコードを追加してください

    CDC* pDC;
    pDC=GetDC();
       ;
       ;    (省略)

    pDC->BitBlt( 0, 0, wx, wy,&cdc, 0, 0, SRCCOPY);
      ;
       ;  (省略)
     DeleteObject(Bitmap);
}
このプログラムでは、ショートカットキーを押すと画面がキャプチャーされるのですが
再描画の問題が発生するので。OnDraw関数の中に上記のプログラムを書くことにしまし
た。しかし、OnDraw関数の中にプログラムを書くと、実行したと同時に画面がキャプチ
ャーされて表示してしまいます。

ショートカットキーを押すと初めて画面がキャプチャーできるようにしたいのです。
ショートカットキーと再描画の問題をうまく解決できる方法やヒントを教えて下さい。

初心者なので、的はずれな発言や質問などしているかもしれませんが、お許し下さい。

Bun 2001/11/12(月) 18:38:36
フラグでも準備してできませんか?

宮崎県 2001/11/12(月) 20:54:30
[[解決]]
Bunさんありがとうございました。
まだ始めたばかりでフラグの利用方を思いつきませんでした。

Bunさんのフラグの一言で道が開けました。過去ログや自分
なりに調べた結果、再描画の方に少し問題があるものの、実
行と同時に表示されることは、なくなりました。

今後ともよろしくお願いします。

kazuma 2001/11/13(火) 00:31:11
ショートカットキーが押されたときにキャプチャしてビットマップに保存しておき、
OnDarw ではそのビットマップを画面に表示するだけ、
というのがいいのではないかと。

宮崎県 2001/11/14(水) 01:56:07
ありがとうございます。

ショートカットキーが押されたときにキャプチャしてビットマップに保存する
ことによって再描画の問題もなくなりました。

      

古いスレッドには追加発言できません。