質問: ダイアログ内コントロールの位置取得について いつもお世話になっております。 ダイアログ内に配置されているコントロールの位置の取得方法について ご教授頂きたく質問させていただきました。 私が試したところgetwindowrect( コントロールハンドル, &rc ); とするとありえないぐらい大きな座標が帰ってきます。 上記の方法ではうまくいきません。 ご教授よろしくお願いいたします。
回答: >http://msdn.microsoft.com/ja-jp/library/cc364604.aspx より >クライアント座標はクライアント領域の左上端からの相対座標なので、左上端の座標は常に (0,0) となります。 となっているため >getclientrectでダイアログ内の相対位置を取れます。 は間違っていました。 >もしかしたら便利な関数が存在するのでしょうか? ないのかなぁと。 かわりにこんな関数を作っておくとか。 bool getdlgitemrect(hwnd hdlg, int niddlgitem, rect* rct) { bool bret = false; hwnd hwnd = getdlgitem(hdlg, niddlgitem); if (hwnd != null) { bret = getwindowrect(hwnd, rct); { bret = screentoclient(hdlg, rct); } } return bret; }