菜鸟问题,请多关照 我想用ATL做activx控件,在 HRESULT OnDraw(ATL_DRAWINFO& di)中,控件的位置和长宽似乎都定了,如果想改动这些参数,该怎么办呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 #5 我如何使用手工来控制大小?答:你只要重载IOleObject接口的SetExtent方法.// NoteCtl.h : Declaration of the CNoteCtl...class ATL_NO_VTABLE CNoteCtl : ... STDMETHOD(SetExtent)(DWORD dwDrawAspect, SIZEL *psizel) { ATLTRACE(_T("SetExtent sizing control to 1000x1000 ")); psizel->cx = psizel->cy = 1000; return IOleObjectImpl<CNoteCtl>::SetExtent(dwDrawAspect, psizel); }...};#6 我如何重新设置控件的大小?void CMyCtrl::SetNewSize (int cx, int cy){ SIZEL szlPixels, szlMetric; szlPixels.cx = cx; szlPixels.cy = cy; AtlPixelToHiMetric(&szlPixels, &szlMetric); // IOleObjectImpl SetExtent(DVASPECT_CONTENT, &szlMetric); // update control sizing... m_rcPos.right= m_rcPos.left + cx; m_rcPos.bottom= m_rcPos.top + cy; if (m_spInPlaceSite != NULL) { // needed for IE to accept the resizing m_spInPlaceSite->OnPosRectChange(&m_rcPos); } SetFocus(); XML文件读取 如何才能实现最高效的内存分配/释放? win32 窗口CPU占用率为什么总是100% 请教winsock编程中的listen函数 关于CTime类的问题 请问哪里有btree的c实现代码? 主 题: VC如何操作EXCEL和ACCESS数据库 UP有分哦 请教如何结束一个程序 计算机专业的人在国企都干些什么呢? 请教:如何在基于Dialog的VC程序中Insert 工具条?---初学者的困惑 一个编译错误问题 新手问VC6用DAO操作ACCESS的老问题
答:你只要重载IOleObject接口的SetExtent方法.// NoteCtl.h : Declaration of the CNoteCtl
...
class ATL_NO_VTABLE CNoteCtl :
...
STDMETHOD(SetExtent)(DWORD dwDrawAspect, SIZEL *psizel)
{
ATLTRACE(_T("SetExtent sizing control to 1000x1000 "));
psizel->cx = psizel->cy = 1000;
return IOleObjectImpl<CNoteCtl>::SetExtent(dwDrawAspect, psizel);
}
...
};#6 我如何重新设置控件的大小?
void CMyCtrl::SetNewSize (int cx, int cy)
{
SIZEL szlPixels, szlMetric;
szlPixels.cx = cx;
szlPixels.cy = cy; AtlPixelToHiMetric(&szlPixels, &szlMetric);
// IOleObjectImpl
SetExtent(DVASPECT_CONTENT, &szlMetric); // update control sizing...
m_rcPos.right= m_rcPos.left + cx;
m_rcPos.bottom= m_rcPos.top + cy;
if (m_spInPlaceSite != NULL) {
// needed for IE to accept the resizing
m_spInPlaceSite->OnPosRectChange(&m_rcPos);
}
SetFocus();