MoveWindow 控件移动问题

tanyufeng_521 2013-11-05 11:12:21
我想把控件的高度加高100,利用MoveWindow来设置后发现控件不见了,大家帮忙看看,
代码如下:

void CMamaChatDlg::InitFriendList()
{
CRect rc;
m_listFriend.GetWindowRect(&rc);
rc.bottom += 100 ;

m_listFriend.MoveWindow(&rc);

LoadFriendList();
}


m_listFriend是一个CListCtrl
...全文
318 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
tanyufeng_521 2013-11-06
  • 打赏
  • 举报
回复
引用 17 楼 ftd2013 的回复:
[quote=引用 15 楼 tanyufeng_521 的回复:] 现在已经好了,是我粗心,谢谢你的帮忙。由于我的背景也是白色的,所以窗口更改后是看不出来的,所以我以为没有改变大小。产生这种问题的原因是我下面有加载好友信息的函数,在没有改变大小的时候这些信息是可以显示的,但现在显示不出来了.........
截个图看看[/quote] 没有改变大小前: 改变大小后:
Eleven 2013-11-05
  • 打赏
  • 举报
回复
xxx.GetWindowRect(); ScreenToClient(rc); rc.bottom += ...; xxx.MoveWindow(rc);
tanyufeng_521 2013-11-05
  • 打赏
  • 举报
回复
引用 4 楼 hurryboylqs 的回复:
m_listFriend创建时的Rect是多少?
具体我也不知道,但是不是用GetWindowRect获取了吗??? 应该不用知道吧,而且我保证m_listFriend再加高100不会超过父窗口的边界
hurryboylqs 2013-11-05
  • 打赏
  • 举报
回复
m_listFriend创建时的Rect是多少?
tanyufeng_521 2013-11-05
  • 打赏
  • 举报
回复
自己顶个,不知道大家有没有碰到这种问题???感觉应该不会出错的
tanyufeng_521 2013-11-05
  • 打赏
  • 举报
回复
引用 1 楼 yaozhiyong110 的回复:
试试: m_listFriend.GetWindowRect(&rc); ScreenToClient(&rc); ...
还是一样,都不见了。。。
yaozhiyong110 2013-11-05
  • 打赏
  • 举报
回复
试试: m_listFriend.GetWindowRect(&rc); ScreenToClient(&rc); ...
打你屁屁 2013-11-05
  • 打赏
  • 举报
回复
引用 15 楼 tanyufeng_521 的回复:
现在已经好了,是我粗心,谢谢你的帮忙。由于我的背景也是白色的,所以窗口更改后是看不出来的,所以我以为没有改变大小。产生这种问题的原因是我下面有加载好友信息的函数,在没有改变大小的时候这些信息是可以显示的,但现在显示不出来了,不知道为什么。其他任何地方都没有更改,而且,我把这段更改大小的代码注释掉,信息又可以显示出来了,帮忙看看是什么原因,看是不是SetWindowPos函数使用有有什么需要处理的地方
截个图看看
tanyufeng_521 2013-11-05
  • 打赏
  • 举报
回复
引用 12 楼 xiaohuh421 的回复:
你这样的问题, 一般都是坐标计算问题. 你这样来试, 先用鼠标把你的窗口移动到屏幕左上角对齐( 为什么是左上角, 就是为了排除掉屏幕坐标与客户区坐标的区别) 然后再调用MoveWindow或者SetWindowPos来移动坐标. 注意调试看传入函数的参数是否正确. 比如负的坐标 负的宽度什么的, 需要注意,.
坐标计算没有问题,只是需要用ScreenToClient函数转换下
tanyufeng_521 2013-11-05
  • 打赏
  • 举报
回复
引用 13 楼 ftd2013 的回复:
[quote=引用 11 楼 tanyufeng_521 的回复:] [quote=引用 10 楼 ftd2013 的回复:] [quote=引用 9 楼 tanyufeng_521 的回复:] [quote=引用 8 楼 ftd2013 的回复:] 用setwindowpos试试
你说的试这样吗???

void CMamaChatDlg::InitFriendList()
{
	CRect rc;
	m_listFriend.GetWindowRect(&rc);
	ScreenToClient(&rc);
	rc.bottom += 100 ;
	
	//m_listFriend.MoveWindow(&rc);
	m_listFriend.SetWindowPos(NULL, rc.left, rc.top, rc.Width(), rc.Height(), SWP_NOZORDER);

	LoadFriendList();
}
可是还是不行,还是没反应。[/quote]

void CMamaChatDlg::InitFriendList()
{
    CRect rc;
    m_listFriend.GetWindowRect(&rc);
    ScreenToClient(&rc);
     
    //m_listFriend.MoveWindow(&rc);
    m_listFriend.SetWindowPos(NULL, rc.left, rc.top, rc.Width(), rc.Height() + 100, SWP_NOZORDER);
 
    LoadFriendList();
}
在函数里面加100[/quote] 还是不行[/quote] m_listFriend.SetWindowPos(NULL, rc.left, rc.top, rc.Width(), rc.Height() + 100, SWP_SHOWWINDOW); 再不行就是控件问题了[/quote] 现在已经好了,是我粗心,谢谢你的帮忙。由于我的背景也是白色的,所以窗口更改后是看不出来的,所以我以为没有改变大小。产生这种问题的原因是我下面有加载好友信息的函数,在没有改变大小的时候这些信息是可以显示的,但现在显示不出来了,不知道为什么。其他任何地方都没有更改,而且,我把这段更改大小的代码注释掉,信息又可以显示出来了,帮忙看看是什么原因,看是不是SetWindowPos函数使用有有什么需要处理的地方
sumos 2013-11-05
  • 打赏
  • 举报
回复
断点查看哪。。。
打你屁屁 2013-11-05
  • 打赏
  • 举报
回复
引用 11 楼 tanyufeng_521 的回复:
[quote=引用 10 楼 ftd2013 的回复:] [quote=引用 9 楼 tanyufeng_521 的回复:] [quote=引用 8 楼 ftd2013 的回复:] 用setwindowpos试试
你说的试这样吗???

void CMamaChatDlg::InitFriendList()
{
	CRect rc;
	m_listFriend.GetWindowRect(&rc);
	ScreenToClient(&rc);
	rc.bottom += 100 ;
	
	//m_listFriend.MoveWindow(&rc);
	m_listFriend.SetWindowPos(NULL, rc.left, rc.top, rc.Width(), rc.Height(), SWP_NOZORDER);

	LoadFriendList();
}
可是还是不行,还是没反应。[/quote]

void CMamaChatDlg::InitFriendList()
{
    CRect rc;
    m_listFriend.GetWindowRect(&rc);
    ScreenToClient(&rc);
     
    //m_listFriend.MoveWindow(&rc);
    m_listFriend.SetWindowPos(NULL, rc.left, rc.top, rc.Width(), rc.Height() + 100, SWP_NOZORDER);
 
    LoadFriendList();
}
在函数里面加100[/quote] 还是不行[/quote] m_listFriend.SetWindowPos(NULL, rc.left, rc.top, rc.Width(), rc.Height() + 100, SWP_SHOWWINDOW); 再不行就是控件问题了
xiaohuh421 2013-11-05
  • 打赏
  • 举报
回复
你这样的问题, 一般都是坐标计算问题. 你这样来试, 先用鼠标把你的窗口移动到屏幕左上角对齐( 为什么是左上角, 就是为了排除掉屏幕坐标与客户区坐标的区别) 然后再调用MoveWindow或者SetWindowPos来移动坐标. 注意调试看传入函数的参数是否正确. 比如负的坐标 负的宽度什么的, 需要注意,.
tanyufeng_521 2013-11-05
  • 打赏
  • 举报
回复
引用 10 楼 ftd2013 的回复:
[quote=引用 9 楼 tanyufeng_521 的回复:] [quote=引用 8 楼 ftd2013 的回复:] 用setwindowpos试试
你说的试这样吗???

void CMamaChatDlg::InitFriendList()
{
	CRect rc;
	m_listFriend.GetWindowRect(&rc);
	ScreenToClient(&rc);
	rc.bottom += 100 ;
	
	//m_listFriend.MoveWindow(&rc);
	m_listFriend.SetWindowPos(NULL, rc.left, rc.top, rc.Width(), rc.Height(), SWP_NOZORDER);

	LoadFriendList();
}
可是还是不行,还是没反应。[/quote]

void CMamaChatDlg::InitFriendList()
{
    CRect rc;
    m_listFriend.GetWindowRect(&rc);
    ScreenToClient(&rc);
     
    //m_listFriend.MoveWindow(&rc);
    m_listFriend.SetWindowPos(NULL, rc.left, rc.top, rc.Width(), rc.Height() + 100, SWP_NOZORDER);
 
    LoadFriendList();
}
在函数里面加100[/quote] 还是不行
打你屁屁 2013-11-05
  • 打赏
  • 举报
回复
引用 9 楼 tanyufeng_521 的回复:
[quote=引用 8 楼 ftd2013 的回复:] 用setwindowpos试试
你说的试这样吗???

void CMamaChatDlg::InitFriendList()
{
	CRect rc;
	m_listFriend.GetWindowRect(&rc);
	ScreenToClient(&rc);
	rc.bottom += 100 ;
	
	//m_listFriend.MoveWindow(&rc);
	m_listFriend.SetWindowPos(NULL, rc.left, rc.top, rc.Width(), rc.Height(), SWP_NOZORDER);

	LoadFriendList();
}
可是还是不行,还是没反应。[/quote]

void CMamaChatDlg::InitFriendList()
{
    CRect rc;
    m_listFriend.GetWindowRect(&rc);
    ScreenToClient(&rc);
     
    //m_listFriend.MoveWindow(&rc);
    m_listFriend.SetWindowPos(NULL, rc.left, rc.top, rc.Width(), rc.Height() + 100, SWP_NOZORDER);
 
    LoadFriendList();
}
在函数里面加100
tanyufeng_521 2013-11-05
  • 打赏
  • 举报
回复
引用 8 楼 ftd2013 的回复:
用setwindowpos试试
你说的试这样吗???

void CMamaChatDlg::InitFriendList()
{
	CRect rc;
	m_listFriend.GetWindowRect(&rc);
	ScreenToClient(&rc);
	rc.bottom += 100 ;
	
	//m_listFriend.MoveWindow(&rc);
	m_listFriend.SetWindowPos(NULL, rc.left, rc.top, rc.Width(), rc.Height(), SWP_NOZORDER);

	LoadFriendList();
}
可是还是不行,还是没反应。
打你屁屁 2013-11-05
  • 打赏
  • 举报
回复
用setwindowpos试试
tanyufeng_521 2013-11-05
  • 打赏
  • 举报
回复
引用 6 楼 VisualEleven 的回复:
xxx.GetWindowRect(); ScreenToClient(rc); rc.bottom += ...; xxx.MoveWindow(rc);
也不可以,会不会是其他地方出了问题???感觉这段代码本身应该没问题 InitFriendList,这个函数我是放在OnInitDialog里面调用,会不会有问题???

15,979

社区成员

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

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