我用 COleControl::SetControlSize(40, 40);
结果屏幕一闪一闪的,加上 Invalidate();
就造成非法操作。

解决方案 »

  1.   

    重载OnSetObjectRects、OnSetExtent两个函数
    //下面的函数是控制控件实际大小BOOL CSmartTestCtrl::OnSetObjectRects(LPCRECT lpRectPos, LPCRECT lpRectClip) 
    {
      //左上右下是你的控件的显示的范围
       CRect xrect(左,上,右 ,下);
    return COleControl::OnSetObjectRects(&xrect, &xrect);
    }
    //下面的函数是控制控件外面虚框大小
    BOOL CSmartTestCtrl::OnSetExtent(LPSIZEL lpSizeL) 
    {
    // TODO: Add your specialized code here and/or call the base class
    SIZEL s;
    s.cx=lpSizeL->cx ;
    s.cy=600 ;
    return COleControl::OnSetExtent(&s);
    }
      

  2.   

    上面的两个函数会固定住控件的大小和位置。
    其实,你只需要在你的控件的构造函数里写
    SetInitialSize(宽,高);
    就成了
      

  3.   

    请问,如果我要根据在control上所显示的图片大小来确定control的尺寸,应该如何调用这两个函数?
    谢谢!
      

  4.   

    在构造函数中调用SetInitialSize()设置控件的初始大小