以下是该方法的基本用法和一些关键信息:
BOOL COleControl::OnGetNaturalExtent(DWORD dwAspect, LONG lindex, DVTARGETDEVICE* ptd, HDC hdcDraw, DVEXTENTINFO* pExtentInfo, LPSIZEL psizel) const;
- dwAspect: 表示要获取的方面,通常为 DVASPECT_CONTENT。
- lindex: 在数据源对象中的项的索引,通常为 -1。
- ptd: 目标设备的信息,通常为 nullptr。
- hdcDraw: 目标设备的设备上下文,通常为 nullptr。
- pExtentInfo: 用于存储扩展信息的 DVEXTENTINFO 结构。
- psizel: 用于存储自然大小的 SIZEL 结构。
在实现 OnGetNaturalExtent 方法时,你需要根据你的控件类型和内容来确定自然大小。在函数中,你将设置 psizel 的值以反映自然大小。
以下是一个简单的示例:
BOOL MyControl::OnGetNaturalExtent(DWORD dwAspect, LONG lindex, DVTARGETDEVICE* ptd, HDC hdcDraw, DVEXTENTINFO* pExtentInfo, LPSIZEL psizel) const
{
// 设置自然大小为 100x100(示例值,根据实际需要调整)
psizel->cx = 100;
psizel->cy = 100;
return TRUE;
}
这只是一个基本的示例,实际上你可能需要根据你的控件的内容和需求来计算自然大小。确保在设置 psizel 的值时考虑到不同的单位(通常是 HIMETRIC 单位)。
请注意,如果你的控件支持多种方面(如 DVASPECT_CONTENT 和 DVASPECT_THUMBNAIL),你可能需要根据 dwAspect 参数的值来区分不同的情况,并为每个方面提供相应的自然大小。
转载请注明出处:http://www.zyzy.cn/article/detail/21113/MFC/COleControl