简单的方法,让控件根据原始的相对位置进行调整。
那位大侠写过这样的程序?还可以加分
8 个解决方案
#1
以前有人提过相同的问题,OnSize中,一个个改变的确很麻烦,有过解答,好像是从codeproject下载一个类吧,你再搜搜看.
#2
你需要在文档或者其他地方储存下每个控件的位置、长、宽(建议使用CObList储存),
然后在FormVIew大小改变时,依据这些信息改变每个控件的大小和位置。
然后在FormVIew大小改变时,依据这些信息改变每个控件的大小和位置。
#3
to xindao_wang(小日本都是猪) :
codeproject老是上不去,你有吗?能不能发给我
codeproject老是上不去,你有吗?能不能发给我
#4
http://search.csdn.net/Expert/topic/2549/2549129.xml?temp=.6776697
#5
响应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);
}
}
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);
}
}
#6
http://www.vcshare.net/bbs/ShowPost.asp?id=1137
#7
自己搞定了,参考一个可以自动调整对话框上控件位置的类CResiableDialog,
修改了一个CResiableFormView类,只需要把重载CFormView改为CResiableFormView,
然后在OnInitialUpdate中设置控件的调整位置的基准点
AddAnchor(IDC_BUTTON1,TOP_LEFT,BOTTOM_RIGHT);
AddAnchor(IDC_STATIC_TEXT,TOP_LEFT,BOTTOM_RIGHT);
就可以自动调整控件位置
修改了一个CResiableFormView类,只需要把重载CFormView改为CResiableFormView,
然后在OnInitialUpdate中设置控件的调整位置的基准点
AddAnchor(IDC_BUTTON1,TOP_LEFT,BOTTOM_RIGHT);
AddAnchor(IDC_STATIC_TEXT,TOP_LEFT,BOTTOM_RIGHT);
就可以自动调整控件位置
#8
mark
#1
以前有人提过相同的问题,OnSize中,一个个改变的确很麻烦,有过解答,好像是从codeproject下载一个类吧,你再搜搜看.
#2
你需要在文档或者其他地方储存下每个控件的位置、长、宽(建议使用CObList储存),
然后在FormVIew大小改变时,依据这些信息改变每个控件的大小和位置。
然后在FormVIew大小改变时,依据这些信息改变每个控件的大小和位置。
#3
to xindao_wang(小日本都是猪) :
codeproject老是上不去,你有吗?能不能发给我
codeproject老是上不去,你有吗?能不能发给我
#4
http://search.csdn.net/Expert/topic/2549/2549129.xml?temp=.6776697
#5
响应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);
}
}
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);
}
}
#6
http://www.vcshare.net/bbs/ShowPost.asp?id=1137
#7
自己搞定了,参考一个可以自动调整对话框上控件位置的类CResiableDialog,
修改了一个CResiableFormView类,只需要把重载CFormView改为CResiableFormView,
然后在OnInitialUpdate中设置控件的调整位置的基准点
AddAnchor(IDC_BUTTON1,TOP_LEFT,BOTTOM_RIGHT);
AddAnchor(IDC_STATIC_TEXT,TOP_LEFT,BOTTOM_RIGHT);
就可以自动调整控件位置
修改了一个CResiableFormView类,只需要把重载CFormView改为CResiableFormView,
然后在OnInitialUpdate中设置控件的调整位置的基准点
AddAnchor(IDC_BUTTON1,TOP_LEFT,BOTTOM_RIGHT);
AddAnchor(IDC_STATIC_TEXT,TOP_LEFT,BOTTOM_RIGHT);
就可以自动调整控件位置
#8
mark