求解释MoveWindow的用法

C++学院 2011-12-25 09:54:12
我用VC在画框框的时候,要移动一个子窗口form到指定的容器位置,弄不清楚以下这几个函数的用法,求达人指点迷津,


我的函数如下:

void GuideOnSize(HWND hwnd, UINT state, int cx, int cy)
{
RECT rt;
HWND hBorder = GetDlgItem(hwnd,GUIDE_STATIC_BORDER);

GetClientRect(hBorder,&rt);//用这个
POINT pt;

GetWindowRect(hBorder,&rt);//还是用这个
RECT rtw;

GetClientRect(hBorder,&rtw);
pt.y = rtw.top;
pt.x= rtw.left;

ClientToScreen(hwnd,&pt); //这个转换函数,是容器窗口,还是。

ShowWindow(hDLG[0],SW_SHOW);
MoveWindow(hDLG[0],pt.x,pt.y,rtw.right,rtw.bottom,TRUE);

}

这几个函数没有弄明白,move来move去,都move不进我的容器窗口啊。要疯了,求人指点。

...全文
551 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
C++学院 2011-12-30
  • 打赏
  • 举报
回复
求教:
我的代码如下:
hFrame 是我的容器容器,hView是我的视窗子容器,都是主窗口里的子窗口;
我想把hView窗口移动到hFrame窗口中,就是不成功。
弄了好几天了,不甚理解。不知道错在哪里。



void WinDoButtonOK(HWND hwnd)
{
RECT rtFrame,rtView;
HWND hFrame,hView;

hFrame = GetDlgItem(hwnd,IDC_FRAME);
hView = GetDlgItem(hwnd,IDC_LISTVIEW);

GetClientRect(hFrame,&rtFrame);
POINT pt;
pt.x = rtFrame.left;
pt.y= rtFrame.top;
ClientToScreen(hFrame,&pt);

MoveWindow(hView,pt.x,pt.y,rtFrame.right,rtFrame.bottom,TRUE);


}
C++学院 2011-12-30
  • 打赏
  • 举报
回复
MFC里的MoveWindow我用的没有问题,
CRect myRect;
GetClientRect(&myRect);

ClientToScreen(myRect);
MoveWindow(myRect.left, myRect.top,
myRect.Width(), myRect.Height());


可能是MFC类自己已经转换过了。

但是在SDK方式下,我这几个函数理解的不透彻。
例如:一个主窗口hMain 中有2个子窗口,一个是容器窗口hFrame,一个hView子窗口

如何把hView窗口move到hFrame窗口的位置及大小

Eleven 2011-12-28
  • 打赏
  • 举报
回复
GetWindowRect();
ScreenToClient(..);
MoveWindow();即可
dahaiI0 2011-12-28
  • 打赏
  • 举报
回复
如果窗口时POP窗口,参数就是屏幕坐标,如果是子窗口,就是客户区坐标。客户区坐标和屏幕坐标有相应的API转换,转换的时候要注意是哪个窗口去掉这些API。
战在春秋 2011-12-25
  • 打赏
  • 举报
回复
试试如下代码:
CRect myRect;
HWND hBorder = GetDlgItem(hwnd,GUIDE_STATIC_BORDER);
GetClientRect(hBorder,&myRect);
ClientToScreen(myRect);
MoveWindow(hDLG[0],myRect.left, myRect.top,myRect.Width(), myRect.Height(),TRUE);
  • 打赏
  • 举报
回复
看看这个就知道了
http://www.cppblog.com/aurain/archive/2009/03/10/76126.html
wmnmtm 2011-12-25
  • 打赏
  • 举报
回复
// <移动> 工具栏按钮

this->GetDlgItem(IDC_STATIC_TOOLBTN0)->MoveWindow(m_rectToolBtn[0]);
this->GetDlgItem(IDC_STATIC_TOOLBTN1)->MoveWindow(m_rectToolBtn[1]);
this->GetDlgItem(IDC_STATIC_TOOLBTN2)->MoveWindow(m_rectToolBtn[2]);
this->GetDlgItem(IDC_STATIC_TOOLBTN3)->MoveWindow(m_rectToolBtn[3]);
this->GetDlgItem(IDC_STATIC_TOOLBTN4)->MoveWindow(m_rectToolBtn[4]);
this->GetDlgItem(IDC_STATIC_TOOLBTN5)->MoveWindow(m_rectToolBtn[5]);
this->GetDlgItem(IDC_STATIC_TOOLBTN6)->MoveWindow(m_rectToolBtn[6]);



m_rectToolBtn[6]是CRect对象

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧