ボタンの真下の座標がうまくとれない

解決


たかみちえ  URL  2002-05-07 05:13:11  No: 75577

"ブラウザ風のボタンを作りたい"の質問に関係あることなんですけど、
ユーザーコントロールの真下にある画像を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
  こういうふうにやると、背景はしっかり転送されるんですけど、少しずれてしまいます。

  計算すればなんとかなると思いますけど、どういう計算をすればいいのか…。
おしえてください。おねがいします。


こころ  URL  2002-05-11 09:56:44  No: 75578

GetDCでとれるデバイスに書き込むと
ウィンドウの一番左上からになると思います。
(フォームとかでやるとわかりやすい・・・)

んで、これを解決するにはウィンドウのクライアント領域を取得して
その分だけオフセットしてあげればいいと。
GetClientRectやClientToScreen,GetWindowRectを利用して
こころなんかは算出しています。


たかみちえ  URL  2002-05-13 06:25:08  No: 75579

なるほどそうなんですかぁ、
クライアントサイズとかについても分かったし、いろいろ勉強になります。
ありがとうございました。


たかみちえ  URL  2002-05-13 06:25:39  No: 75580

押し忘れました^^;


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加