ボタンの相対座標をもとめて移動させる
hWnd はボタンが配置されているウィンドウのハンドルとし、
button_hWnd は移動するボタンのハンドルとします。
POINT pt;
RECT re;
GetWindowRect(button_hWnd,&re); //ボタンの画面上の座標を取得
pt.x=re.left; //POINT構造体に代入
pt.y=re.top;
//この時点ではptにはボタンの絶対座標が入っている
ScreenToClient(hWnd,&pt); //ボタンの座標をクライアントの座標に変換
//この時点でptにボタンの相対座標が入る
GetClientRect(button_hWnd,&re); //ボタンのサイズを取得
MoveWindow(button_hWnd,pt.x+10,pt.y+10,re.right,re.bottom,1);//X,Y軸を+10してボタンを移動
▲上記プログラムでコントロールの相対座標を求めることが出来、
そのコントロールを任意に移動させる事が可能です
GetClientRect を使わなくても、GetWindowRectの時点でボタンサイズがわかるため、
その値でもとめたほうがいいかもしれません。
hWnd にウィンドウズの電卓のウィンドウのハンドルを与え、
button_hWnd に電卓の 4 のボタンのハンドルを与えて上記プログラムを実行してみました
4 のボタンが X座標+10、Y座標+10 に移動しているのが確認できます。
▲トップページ
>
Windows と C++