在进行MFC ActiveX开发时,在控件里放一个Dialog,如何根据控件的大小自动调整Dialog的大小?
我的方法是:
void CMyActiveXCtrl::OnSize(UINT nType, int cx, int cy)
{
COleControl::OnSize(nType, cx, cy); // TODO: 在此处添加消息处理程序代码
if (cx > 0 && cy > 0)
{
m_dlgBody.SetDlgSize();
}
}void CDlgBody::SetDlgSize()
{
CRect rect;
GetParent()->GetClientRect(&rect);
this->MoveWindow(rect);
}但是没效果
网上查了蛮多资料都说MoveWindow可以动态改变对话框的大小。
请各位大虾帮帮忙啊!!!mfcActiveX

解决方案 »

  1.   

    OnSize的对应映射用了没
    WM_SIZE消息映射
      

  2.   

    有个ResizableLib你找找  很好用
      

  3.   

    在CMyActiveXCtrl里有ON_WM_SIZE(),函数都是用向导生成的
      

  4.   

    我感觉你那样会崩溃,至少要判断m_dlgBody的句柄是否为空才行
    另外MoveWindow是没问题的,你可以设置断点看看
      

  5.   

    COleControl::OnSize(nType, cx, cy);
    去掉这句,不要执行默认的基类函数,另外,还有一个坐标系和客户区和屏幕区的问题,你单步执行看看SIZE里的数据是多少,是不是需要进行ClientToScreen和ScreenToClient这两个函数转换
      

  6.   

    对话框已经创建,句柄不为空,且MoveWindow函数确实是执行了的,this->MoveWindow(rect);rect的bottom和right都和控件OnSize函数的cx和cy一样,但是它就是不随控件大小改变而改变啊!!!