请问要让用户能动态改变一窗口中CTreeCtrl和CListCtrl的大小应该如何做? 是不是只能使用CSplitterWnd切分这个窗口,具体如何实现? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用MoveWindow或者SetWindowPos可以改变控件的大小 http://community.csdn.net/Expert/topic/3147/3147044.xml?temp=.348736 响应OnSize函数,利用MoveWindow和SetWindowPos可以改变大小 用鼠标控制,就像多文档界面里鼠标移动到Splitter上时就会变成可拖动状态可以改变左右两边的大小 最近问这个的怎么这么多???响应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); } } OnResize只能在整个窗口改变大小的时候才起作用,和我问的不太一样,我窗口大小是固定的,不需改变。只不过想改变窗口上的CTreeCtrl和CListCtrl的尺寸 拖动鼠标也是如此只要获取区域大小GetClientRect(&rect);即可 不在OnSize是一样的用MoveWindow或者SetWindowPos,你只要传递给它适当的参数就可以把代码贴到的控件大小处理函数是 窗口设置为最前,然后立即取消 VC++对话框的KeyDown问题 使用DSOFRAMER 控制PPT在对话框中放映这段代码要怎么编写呢 vc++程序打包后在windows2000下不能用,请问是怎么回事儿? chtmlview中怎么获取点出了哪个按钮? 请教: 两个CStringArray类型的变量之间可以直接赋值吗? 一个奇怪的问题? 关于数据库备份的问题?? 广义表问题, 哪里能买到深入浅出MFC这本书? 请问如何检测注册表和关闭窗口? SOCKET编程,为什么连接不上呢,帮我看看呀
MoveWindow和SetWindowPos可以改变大小
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);
} }
把代码贴到的控件大小处理函数是