最小化もしくはAIT+TABで違う画面が表示されている場合などに
隠れているフォームの画像をクリップボードに取り込みたく思い
form1.hdcから以下のように画像を作成しているのですが
hDCSrc = GetDC(hWndSrc)
hDCMemory = CreateCompatibleDC(hDCSrc)
hBmp = CreateCompatibleBitmap(hDCSrc, WidthSrc, HeightSrc)
うまく行きません。よろしくお願い致します
> AIT
…ALT ですよね? (Alternate Key)
> 最小化もしくはAIT+TABで違う画面が表示されている場合などに
下記の解説が参考になるでしょうか。
http://msdn.microsoft.com/library/ja/jpdnwxp/htm/xpvisualstyles.asp
[上位レベルのアプリケーション ウィンドウを表示する]
[ウィンドウ プレビューに色を付ける]
のあたり。
返信ありがとうございます。コードを見直しましたが、腑に落ちないというか、どんな状態(WINキー+D)でも1024Ⅹ768の画像はちゃんと保存されているんです。ただデスクトップの画像だったりするんです。
ちゃんと、form.のハンドルを指定しているのに変ですね。
もう一度見直してみます。
最小化されているウィンドウなら、とりあえず
Picture1.Cls
PrintWindow hWndSrc, Picture1.hdc, 0
Picture1.Refresh
で取得できました。求める結果かどうかはわかりませんが。
> ただデスクトップの画像だったりするんです。
変数名のミスなどで、hWndSrc に 0 が指定されていたとか…。
返信ありがとうございます
PrintWindowが非表示領域も描画できるそうですが、
逆にとればそれ以外の場合は非表示領域はできないという事かもしれません。
win32apiからtextで宣言したいのですが、無いようですのであきらめます。
私はピクチャーに表示されている画像を扱うのは得意なのですが、フォームの状態を画像に落として、外部から(ネット経由で)簡単に表示する方法を考えていたのですが。(javaで)全部javaで書くことにしようと思います。
ありがとうございました。
ツイート | ![]() |