MFC 控件开发
在进行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可以动态改变对话框的大小。
请各位大虾帮帮忙啊!!! mfc ActiveX
[解决办法]
OnSize的对应映射用了没
WM_SIZE消息映射
[解决办法]
我也用这种方法 可以的
是不是向ls说的
[解决办法]
有个ResizableLib你找找 很好用
[解决办法]
可以先调试下有没有触发那个消息了,其次是在调用这些方法的时候先判断对话框是否已经创建了
[解决办法]
我感觉你那样会崩溃,至少要判断m_dlgBody的句柄是否为空才行
另外MoveWindow是没问题的,你可以设置断点看看
[解决办法]
COleControl::OnSize(nType, cx, cy);
去掉这句,不要执行默认的基类函数,另外,还有一个坐标系和客户区和屏幕区的问题,你单步执行看看SIZE里的数据是多少,是不是需要进行ClientToScreen和ScreenToClient这两个函数转换