"ブラウザ風のボタンを作りたい"の質問に関係あることなんですけど、
ユーザーコントロールの真下にある画像をbitbltで転送しようとしたんですけど、
Dim DC As Long, rc As RECT, rc2 As RECT
GetWindowRect UserControl.hWnd, rc:GetWindowRect ContainerHwnd, rc2
DC = GetDC(ContainerHwnd)
With UserControl
'いったん隠す
ShowWindow .hWnd, vbHide:DoEvents
BitBlt .hDC, 0, 0, ScaleWidth, ScaleHeight, DC, rc.Left - rc2.Left, rc.Top - rc2.Top, vbSrcCopy
ShowWindow .hWnd, vbNormalNoFocus
End With
ReleaseDC ContainerHwnd, DC
こういうふうにやると、背景はしっかり転送されるんですけど、少しずれてしまいます。
計算すればなんとかなると思いますけど、どういう計算をすればいいのか…。
おしえてください。おねがいします。
GetDCでとれるデバイスに書き込むと
ウィンドウの一番左上からになると思います。
(フォームとかでやるとわかりやすい・・・)
んで、これを解決するにはウィンドウのクライアント領域を取得して
その分だけオフセットしてあげればいいと。
GetClientRectやClientToScreen,GetWindowRectを利用して
こころなんかは算出しています。
なるほどそうなんですかぁ、
クライアントサイズとかについても分かったし、いろいろ勉強になります。
ありがとうございました。
押し忘れました^^;
ツイート | ![]() |