こんにちわ。
ディスプレイの全画面をスクリーンショットして、
ファイルへと保存したい場合、
どんなAPIを用いればいいか教えて頂けませんか?
以上、よろしくおねがいします。
使用予定の開発環境、IDEのバージョンとエディッション等
「使用上の注意」に書いてある情報を提示してください。
MFCを使うのかWin32APIの範疇でしたいのか、
GDI+は使えるのか等々、提示する情報が多いほど
有効なレスが受けられる確率が上昇します。
::GetSystemMetrics()で情報をサイズを取得して
::GetDC( NULL );でデスクトップでしょ
互換のCDC,CBitmapを作ってBitBlt();
CImageとかにアタッチしてからの
CImage::Save()とかなら簡単じゃないかな
で,解放
おっとAPIってなんだぁ?
もっと、簡単な方法
1.::keybd_event( VK_SNAPSHOT,0,KEYEVENTF_EXTENDEDKEY,0 );
でクリップボードにコピーして
2.::GetaClipboardData( CF_BITMAP );でHBITMAPを取得して
3.CImage::Save()とかで保存
4.もちろん解放とか
あ、クリップボードの操作が増えたので、もっと簡単かどうかは微妙だぁ。。。
使用環境などを書かずにすみませんでした。
APIと書いた意味は「MFCを使わずWindows API関数のみを使いたい」と伝えたかったので
す。
そのため、開発環境は特に記述しなくてもよいかと思いました。
記述せずすみませんでした。
-------------------------------------------
hirocco さん
沢山の情報ありがとうございます!
1.GetDCからBitmap構造体を作ってWriteFile
2.keydb_event->GetClipboardData->CImage::Save
の両方でできました。
結局のところ、HWNDをどこから取得するかって事ですね。
また、2.だと驚くほど簡単ですね。
ありがとうございました。
解決になっていますけれど、
APIと書いてしまうと一般的なAPIと区別がつきません。
APIってWin32APIだけを指す言葉じゃ有りませんし。
掲示板の場合、言葉だけのやり取りなので省略して曖昧になるくらいなら
きっちり書いた方が誤解を生まないので良いと思いますよ。
あと、CImageクラスを使うとWin32APIの範疇にならないような気がしますけれど、
良いのかなぁ。
純粋にWin32APIの範囲でやりたいなら前者のWriteFileを使った方法ではないかと。
ちなみにCImageはMFCでもない。微妙な立場(vv;)。
そもそもなぜWin32APIの範疇で処理したいのかと言う部分の説明があると
話もしやすくなるのですけれどねぇ。
単純にエクスプレスを使ってるってことなんじゃないのかな?
でも,C#もCLIもあるのにね
あ,ボーランドのコマンドラインのコンパイラだったりして。。。くすくす
>ボーランドのコマンドラインのコンパイラだったりして。。。くすくす
ただで手に入りますからね。
最近、入門者人気ありますね。
ただ、プラットフォームSDKをインストールしたりmakefile作成したりと準備が面倒ですよね。
> 最近、入門者人気ありますね。
まぢですかぁ,そうなの?
VSのExpressが出ちゃったから消えていく方向なのかと思ってましたよ