こんにちは、出来るかどうか分からないことが出来たので
質問したいと思います。
開発環境:Win2000、VC++6.0
ダイアログ上にある座標の一部を押下した時、
そこに表示されているダイアログを切り取って
BITMAPとして保存したいのです。
ダイアログが全て画面に表示されている状態の
時はダイアログの範囲からその位置を割り出し、
切取れたのですが、切取る範囲の一部でも画面
外であったり、ダイアログを小さくして表示さ
れていなかったりすると、最上面の画像が切取
られてしまいます。
そこで、ダイアログ自身のデータをそのまま切
取るいい方法をどなたかご存知ないでしょうか?
>ダイアログ上にある座標の一部を押下した時、
>そこに表示されているダイアログを切り取って
>BITMAPとして保存したいのです。
何がしたいか読み取れないのは私だけでしょうか・・。
ダイアログ上にある、座標の一部を、押下?
ダイアログ上に、ある座標の一部を、押下?
てか、座標の一部ってなんでしょか。。。
いもちぃさん、返事ありがとうございます。
>ダイアログ上にある座標の一部を押下とは
ダイアログ上にある、一定エリア内の一点と言うことです・・・。
たとえば、グループボックス内のどこかを押下すると、
囲まれたボタンやエディットボックス等を含めてBITMAP
として切取るのです。
何がしたいかわからなくはないけど
切り取るとは言わないと思うし
「出来るかどうか分からないことが出来たので」って
日本語が変。(と思うのは私が標準語しゃべれないから?)
>ダイアログが全て画面に表示されている状態の
>時はダイアログの範囲からその位置を割り出し、
>切取れたのですが、切取る範囲の一部でも画面
どうやって?(きいても私にはわからないと思うけど)
ダイアログの表示位置によってうまくいかないのなら
無理やりMoveWindowとかで画面内に動かして
BITMAP保存後 元の位置に戻したら・・・?
(見目麗しくはないけれど)
さなえさん、返事ありがとうございます。
画面上に表示されているものの場合はプリントスクリーン
みたいな感じで取得できます。
>ダイアログの表示位置によってうまくいかないのなら
>無理やりMoveWindowとかで画面内に動かして
>BITMAP保存後 元の位置に戻したら・・・?
MDIの開発なので、親フレームが切取りたい範囲よりも
小さいと、親フレームも大きくしないといけなくなり・・
ちょっといい方法だと思えないのです。
やはり、ダイアログから直接切取れると嬉しいのです。
表示できていないものが、
仮に表示できていたとしたらどうだったか、ってことですか?
同じようなことをしようとして挫折した記憶があります。
何とか一瞬だけ移動させて、とかしかないような気がします。
PAI さん、返事ありがとうございます。
いろいろ調べたのですが分からなかったのです・・。
やはり無理なのでしょうか?
とりあえず、もう少し待ってみます。
あ、無理でしょ。
BitBlt関数自体が、OS内部でビデオドライバに丸投げする関数です。
ビデオドライバは、ハードに丸投げもしくはソフト的に一生懸命
処理します。
どっちにしても、OSしか知らない「もし表示されていたら」を
ドライバなりハードが知る由もなく、「んなことできっか~!」と
キレられて終わりです。はい。<画面外にしても、MDIんときの
ウィンドウ外にしても。
いもちぃさん、またまたありがとうございます。
やはりそうですか、そう思ったのですがとりあえず
他に方法があるか知りたかったので・・・。
ありがとうございます。
切取られるエリアが全て表示されている時のみ
出来るようにする方法で考えるようにします。
レスすれた方、ありがとうございましたm(_ _)m