以下是该方法的基本用法和一些关键信息:
BOOL COleControl::OnGetViewExtent(DWORD dwDrawAspect, LONG lindex, DVTARGETDEVICE* ptd, HDC hdcDraw, LPSIZEL psizel) const;
- dwDrawAspect: 表示绘制方面,通常为 DVASPECT_CONTENT。
- lindex: 在数据源对象中的项的索引,通常为 -1。
- ptd: 目标设备的信息,通常为 nullptr。
- hdcDraw: 目标设备的设备上下文,通常为 nullptr。
- psizel: 用于存储视图范围大小的 SIZEL 结构。
在实现 OnGetViewExtent 方法时,你需要设置 psizel 的值以反映控件在容器中的期望大小。这个方法通常用于告诉容器控件的理想大小,以便容器可以正确地布局和显示控件。
以下是一个简单的示例:
BOOL MyControl::OnGetViewExtent(DWORD dwDrawAspect, LONG lindex, DVTARGETDEVICE* ptd, HDC hdcDraw, LPSIZEL psizel) const
{
// 设置视图范围大小为 200x200(示例值,根据实际需要调整)
psizel->cx = 200;
psizel->cy = 200;
return TRUE;
}
这只是一个基本的示例,实际上你可能需要根据你的控件的内容和需求来计算视图范围大小。确保在设置 psizel 的值时考虑到不同的单位(通常是 HIMETRIC 单位)。
请注意,视图范围通常用于告诉容器如何布局控件,而不是指定控件的实际大小。控件的实际大小可能由容器根据其布局规则和用户交互调整。
转载请注明出处:http://www.zyzy.cn/article/detail/21116/MFC/COleControl