首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

MFC 控件开发,该怎么解决

2013-02-24 
MFC 控件开发在进行MFC ActiveX开发时,在控件里放一个Dialog,如何根据控件的大小自动调整Dialog的大小?我

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说的

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

[解决办法]
有个ResizableLib你找找  很好用
[解决办法]
可以先调试下有没有触发那个消息了,其次是在调用这些方法的时候先判断对话框是否已经创建了
[解决办法]
我感觉你那样会崩溃,至少要判断m_dlgBody的句柄是否为空才行
另外MoveWindow是没问题的,你可以设置断点看看
[解决办法]
COleControl::OnSize(nType, cx, cy);
去掉这句,不要执行默认的基类函数,另外,还有一个坐标系和客户区和屏幕区的问题,你单步执行看看SIZE里的数据是多少,是不是需要进行ClientToScreen和ScreenToClient这两个函数转换

热点排行