请教一个ActiveX控件开发关于窗口的OnSize的问题!谢谢!
大家好,我现在要开发一个自己的控件,控件里面封装了ESRI公司开发的MapObjects2控件(这个是搞GIS系统开发用的,是一个成熟的产品控件),封装一些常用的方法,为了以后开发方便.但是遇到一个问题的,问题是这样的:
由于我自己的控件里面封装MapObjects2,所以,需要在我的控件大小发生变化的时候,让MaoObjects2控件充满我的控件,所以,我在我的控件的OnSize()里做了如下的工作:
LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
// TODO : Add Code for message handler. Call DefWindowProc if necessary.
CRect rect;
::GetClientRect(m_hWnd, &rect);
::SetWindowPos(::GetDlgItem(m_hWnd, IDC_MAP1), HWND_BOTTOM, rect.left, rect.top, rect.Width(), rect.Height(), SWP_NOZORDER | SWP_FRAMECHANGED);
return 0;
}
目的是每次Size大小发生变化,就让Map控件充满整个空间区域。但是,测试发现,填充的时候获取的矩形总是拖动窗口前的矩形,也就是说,填充的结果总是Size变化前的范围,而不是变化后的范围。我不知道原因出在哪里,想了好几个方法也解决不了。希望大家帮忙。谢谢。
另外,为了测试我的方法是否可行,我添加了一个 Edit 控件,然后,做了同样的工作,(完全相同的代码,一模一样,没有任何的区别)。发现 Edit 填充的范围就是Size变化后的范围,能够满足我一开始想要的效果:每次Size变化后,Edit就可以完全充满我的控件。
问题就是这样,不知道我说清楚了没有,请各位朋友帮忙。再次感谢!