PictureBoxにAPIのBitBltなどで描画した場合に、
PictureBoxに描画されているかどうか知る方法は、あるのでしょうか?
Win2000
VB6.0 SP6
どういう回答を期待しているのかつかみにくいのですが・・・。
いつBitBlt関数を発行したかを知りたいのなら、
コードを書いているあなたが一番ご存知なのでは?
それとも、うまく書けたかどうかを知りたいのでしょうか?
>いつBitBlt関数を発行したかを知りたいのなら、
>コードを書いているあなたが一番ご存知なのでは?
そうですよね。
やはり、自分でその辺を管理しないとだめですね。
プロパティで判断できればと思っていたのですが。
原則としてAPI関数は、VBの管理の外側にあります。
ので、たとえばbitbltで表示の状態を変更しても、それがVB側で管理している何らかのプロパティを自動的に変更させる、ということはありません。
bitbltでよくやるのが、PictureBox側のAutoRedrawをFalseのままにしていたり、ImageとPictureあたりのコントロール手順を間違って、bitbltを実行してもイメージが表示されなかったり、他のウィンドウに隠れた部分だけイメージが欠けたりする事象です。
このへんは「bitbltが失敗」しているのではなく、受け取ったVB側での処理のバグということになります。
ので、「とりあえずbitbltを流してからちゃんと表示されているかどうかのチェックをする」プログラムを組むのではなく、「bitbltが間違いなく適切に実行される」プログラムを組むべきでしょう。
ハズしているかもしれませんが、私も最初はこのへんでとまどったので、一応ご参考までに。
bitbltするって事は元の画像がある訳だから
GetDibitsでピクセルデータ取得して比較って手もありますが
Sayさんとさるべーじさんが言ってる事がもっともですね。
自分の考えが、あさはかなのがよくわかりました。
レスをいただき大変ありがとうございました。
ツイート | ![]() |