我创建了一个复合控件,用于以编程方式插入其他ActiveX控件。 (它是其他ActiveX控件的“包装器”)
我按照本指南中的步骤操作:http://support.microsoft.com/kb/218442。
复合控件将包含一个“窗口”,其中包含ActiveX控件。
我需要以编程方式管理包装器中窗口的大小。 我的想法是,如果我知道包装器的大小,我也可以管理窗口的大小。 (例如,包装纸的高度 - 10) 据我所知,到目前为止如何做到:
问题是要创建窗口,我必须在“客户端坐标”中指定控件的大小。但似乎步骤1的输出不适合第2步。
如何将步骤1的输出转换为步骤2的适当输入? 或者还有其他方法可以通过编程方式在复合控件中指定窗口的大小吗?
这是我的简单代码:
// Register the AtlAxWin class which implements ATL containment
// This is not needed for an ATL composite control
AtlAxWinInit();
// m_sizeExtent.cx and m_sizeExtent.cy is an output from step 1
RECT l_rect = {0, 0, m_sizeExtent.cx, m_sizeExtent.cy};
// m_hWnd is the composite control handle
// l_rect is the size of ActiveX control in client coordinates
CAxWindow l_hostedWnd;
l_hostedWnd.Create(m_hWnd,
l_rect,
_T("MetaStock.Chart.2"),
WS_CHILD | WS_VISIBLE,
0,
0U);