CFormView上让控件的大小随着窗体的变化而自动适应

比如说在CFormView上有个按钮控件,为了让按钮的大小和位置随着窗体的变化而相应变化,可以如下实现:

在OnSize()函数里添加代码:


 void CLControl::OnSize(UINT nType, int cx, int cy) { CView::OnSize(nType, cx, cy); // TODO: Add your message handler code here Invalidate(); }
在OnPaint()函数里添加代码:

void CLControl::OnPaint() { CPaintDC dc(this); // device context for painting // TODO: Add your message handler code here // Do not call CFormView::OnPaint() for painting messages CRect rec; GetClientRect(&rec); m_LCbutton1.MoveWindow(rec.Width()/4,rec.Height()/4, rec.Width()/2,rec.Height()/8); m_LCbutton2.MoveWindow(rec.Width()/4,rec.Height()*3/4, rec.Width()/2,rec.Height()/8); }

 

如果你在OnSize()函数里直接使用MoveWindow()函数进行操作,在Release模式下程序可以正常运行(因为不进行所有assert操作),

如果在Debug模式下,则会出现如下错误:

Debug Assertion Failed!

 

出错代码部分如下:

ASSERT(::IsWindow(m_hWnd));

 

之所以出错应该是句柄为null,但解决方法目前不知道。

 

 

你可能感兴趣的:(null)