ピクチャコントロールの座標位置

解決


ふく  2005-03-23 22:09:33  No: 56746

MFC(Visual C++.NET)のSDIベースで、マウスを使ってピクチャコントロールを適当な位置に配置しました。
このピクチャコントロールの位置座標(例えばウィンドウの左上を原点とした時の座標位置)を取得するにはどうしたらよいのでしょうか?


Disca  2005-03-24 10:48:54  No: 56747

通常はGetClientRect です。

ウインドウの左上(非クライアント領域?)の場合、
GetWindowRect()  の後
ScreenToClient() をします。


ふく  2005-03-25 22:17:22  No: 56748

さっそくのご返信ありがとうございます。

下記のようにピクチャコントロール(IDC_PICT1)の位置の取得やってみたのですが、
  CWnd* hA=GetDlgItem(IDC_PICT1);
  CDC* pDCA=hA->GetDC();
  CRect rA;
  hA->GetClientRect(&rA);  
  ScreenToClient(&rA);
  TRACE("%f",rA.left);
位置がいつも0.0と表示されます。
SDIのウィンドウからの座標位置を取得したいのですが、もしご存知でしたら、ご教授お願いいたします。


みい  2005-03-25 23:39:27  No: 56749

GetClientRectのヘルプは読まれましたか?
以下、VC6のヘルプより
> CWnd のクライアント領域のクライアント座標を lpRect で指される構造体に
> コピーします。クライアント座標は、クライアント領域の左上隅と右下隅を
> 示します。クライアント座標は CWnd のクライアント領域の左上隅からの
> 相対位置を示すので、左上隅の座標は (0,0) になります。

Discaさんの書かれている通り、GetWindowRectを使ってください。


ふく  2005-03-26 23:16:19  No: 56750

Discaさま、みいさま

GetWindowRect()とScreenToClient()を使うことで座標の値を取得することが出来ました。
どうもありがとうございました。


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

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






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