ダイアログの一部を切取る方法ありませんか?

[戻る]
TAKA 2002/06/12(水) 11:41:58
こんにちは、出来るかどうか分からないことが出来たので
質問したいと思います。

開発環境:Win2000、VC++6.0

ダイアログ上にある座標の一部を押下した時、
そこに表示されているダイアログを切り取って
BITMAPとして保存したいのです。

ダイアログが全て画面に表示されている状態の
時はダイアログの範囲からその位置を割り出し、
切取れたのですが、切取る範囲の一部でも画面
外であったり、ダイアログを小さくして表示さ
れていなかったりすると、最上面の画像が切取
られてしまいます。

そこで、ダイアログ自身のデータをそのまま切
取るいい方法をどなたかご存知ないでしょうか?

いもちぃ 2002/06/12(水) 13:05:44
>ダイアログ上にある座標の一部を押下した時、
>そこに表示されているダイアログを切り取って
>BITMAPとして保存したいのです。

何がしたいか読み取れないのは私だけでしょうか・・。
ダイアログ上にある、座標の一部を、押下?
ダイアログ上に、ある座標の一部を、押下?
てか、座標の一部ってなんでしょか。。。

TAKA 2002/06/12(水) 14:05:23
いもちぃさん、返事ありがとうございます。

>ダイアログ上にある座標の一部を押下とは
ダイアログ上にある、一定エリア内の一点と言うことです・・・。

たとえば、グループボックス内のどこかを押下すると、
囲まれたボタンやエディットボックス等を含めてBITMAP
として切取るのです。

さなえ 2002/06/12(水) 15:05:13
何がしたいかわからなくはないけど
切り取るとは言わないと思うし
「出来るかどうか分からないことが出来たので」って
日本語が変。(と思うのは私が標準語しゃべれないから?)

>ダイアログが全て画面に表示されている状態の
>時はダイアログの範囲からその位置を割り出し、
>切取れたのですが、切取る範囲の一部でも画面

どうやって?(きいても私にはわからないと思うけど)

ダイアログの表示位置によってうまくいかないのなら
無理やりMoveWindowとかで画面内に動かして
BITMAP保存後 元の位置に戻したら・・・?
(見目麗しくはないけれど)

TAKA 2002/06/12(水) 15:16:16
さなえさん、返事ありがとうございます。

画面上に表示されているものの場合はプリントスクリーン
みたいな感じで取得できます。

>ダイアログの表示位置によってうまくいかないのなら
>無理やりMoveWindowとかで画面内に動かして
>BITMAP保存後 元の位置に戻したら・・・?
 MDIの開発なので、親フレームが切取りたい範囲よりも
小さいと、親フレームも大きくしないといけなくなり・・
ちょっといい方法だと思えないのです。
 やはり、ダイアログから直接切取れると嬉しいのです。

PAI 2002/06/12(水) 15:54:07
表示できていないものが、
仮に表示できていたとしたらどうだったか、ってことですか?

同じようなことをしようとして挫折した記憶があります。
何とか一瞬だけ移動させて、とかしかないような気がします。

TAKA 2002/06/12(水) 15:59:51
PAI さん、返事ありがとうございます。

いろいろ調べたのですが分からなかったのです・・。
やはり無理なのでしょうか?
とりあえず、もう少し待ってみます。

いもちぃ 2002/06/12(水) 16:59:09
あ、無理でしょ。
BitBlt関数自体が、OS内部でビデオドライバに丸投げする関数です。
ビデオドライバは、ハードに丸投げもしくはソフト的に一生懸命
処理します。
どっちにしても、OSしか知らない「もし表示されていたら」を
ドライバなりハードが知る由もなく、「んなことできっか〜!」と
キレられて終わりです。はい。<画面外にしても、MDIんときの
ウィンドウ外にしても。

TAKA 2002/06/12(水) 17:06:04
[[解決]]
いもちぃさん、またまたありがとうございます。

やはりそうですか、そう思ったのですがとりあえず
他に方法があるか知りたかったので・・・。
ありがとうございます。

切取られるエリアが全て表示されている時のみ
出来るようにする方法で考えるようにします。

レスすれた方、ありがとうございましたm(_ _)m

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