请教:控件如何同窗口大小同步变化 在SDI中的TAB控件如何随着主窗口的大小变化. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 响应OnSize函数,利用MoveWindow来控制TAB控件的大小和位置 这个问题讨论过很多次了,搜索一下估计有很多答案响应WM_SIZE消息,一个例子:void COracleAssistView::OnSize(UINT nType, int cx, int cy) { CFormView::OnSize(nType, cx, cy); CRect rect; GetClientRect(&rect); int nWidth = rect.Width(); int nLeight = rect.Height(); if(m_edit.GetSafeHwnd()) { m_edit.SetWindowPos(this,rect.left + nWidth/100,rect.top +nLeight/100,nWidth-nWidth/100*2,nLeight/100*45,SWP_SHOWWINDOW|SWP_NOZORDER); } if(m_btnExec.GetSafeHwnd()) { m_btnExec.SetWindowPos(this,rect.left + nWidth/100*40,rect.top + nLeight/100*47,nWidth/15,nLeight/100*5 ,SWP_SHOWWINDOW|SWP_NOZORDER); } if(m_ctrList.GetSafeHwnd()) //m_ctrlList是listctrl的变量 { m_ctrList.SetWindowPos(this,rect.left + nWidth/100,rect.top + nLeight/100*58,nWidth-nWidth/100*2,nLeight/100*52,SWP_SHOWWINDOW|SWP_NOZORDER); } } 在主窗口发生变化时move tabctrl VC工作区里的视图部分就是一个例子,看下面是怎么实现的:http://www.vckbase.com/document/viewdoc/?id=257 http://community.csdn.net/Expert/topic/3339/3339979.xml?temp=.1871454 同步用WM_sizing,不是同步用WM_size 如果是用gtk编程,你就不用考虑这方面的问题vc需要自己控制在wm_sizing时用movewindow控制控件位置 同步用WM_sizing,不是同步用WM_size这个挺重要。 也可以用SetWindowPos()函数。或者MoveWindow() 响应WM_SIZE消息,然后SetWindowPos MoveWindow成比例改变大小 我想实现个类似中转站的程序,有socket经验的人来讲讲思路好吗? 如何设计view类? 关于CMap对象的冲突问题 VC编译器的问题 ado+xml的问题,真的很急! 大家给个建议吧 有用的就给分 对话框按键问题 【求助】VC++2010,无法打开“资源视图”和显示界面和控件 VC6.0中用classwizard加类为何不能不选基类?(无内容) matlab和opencv对图像做差结果不吻合 如何将DLL中的FORMVIEW替换exe中的FORMVIEW? 如何在对话框中用CSplitter实现分割窗口,调整控件的大小?急!!!!!!!!在线等!
void COracleAssistView::OnSize(UINT nType, int cx, int cy)
{
CFormView::OnSize(nType, cx, cy); CRect rect;
GetClientRect(&rect);
int nWidth = rect.Width();
int nLeight = rect.Height();
if(m_edit.GetSafeHwnd())
{ m_edit.SetWindowPos(this,rect.left + nWidth/100,rect.top +nLeight/100,nWidth-nWidth/100*2,nLeight/100*45,SWP_SHOWWINDOW|SWP_NOZORDER);
} if(m_btnExec.GetSafeHwnd())
{
m_btnExec.SetWindowPos(this,rect.left + nWidth/100*40,
rect.top + nLeight/100*47,nWidth/15,nLeight/100*5 ,SWP_SHOWWINDOW|SWP_NOZORDER);
}
if(m_ctrList.GetSafeHwnd()) //m_ctrlList是listctrl的变量
{ m_ctrList.SetWindowPos(this,rect.left + nWidth/100,
rect.top + nLeight/100*58,nWidth-nWidth/100*2,nLeight/100*52,SWP_SHOWWINDOW|SWP_NOZORDER);
} }
http://www.vckbase.com/document/viewdoc/?id=257
vc需要自己控制
在wm_sizing时用movewindow控制控件位置
这个挺重要。