用VC设计一个控件,在vb中使用,
我希望不能让vb随意改变这个控件的大小,
我的做法是在OnSize中加入控制代码,
但无论我用MoveWindow 还是 SetWindowPos 都无法实现这个功能,void CCoolButtonCtrl::OnSize(UINT nType, int cx, int cy) 
{
COleControl::OnSize(nType, cx, cy);

// TODO: Add your message handler code here

   MoveWindow(0,0,100,100,true);

}谢谢关注

解决方案 »

  1.   

    用COleControl::SetControlSize同时调用Invalidate()即可达到目的
      

  2.   

    不行,或者说,有问题,
    我用这个语句SetControlSize(100,100);
    也就是把控件大小限制为100*100,
    我在vb中调用,你会发现还是可以调节它的大小,vb的属性里显示的却并不是100*100个像素,
    我这里很难将清楚的,如果能上传图片的话就会很清楚了,
    或者你试试也就知道了
      

  3.   

    重载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);
    }
      

  4.   

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

  5.   

    你要先计算出图片的大小,然后再根据图片的大小,设置控件的大小!
    具体怎么计算的话,你自己先想想了!
    如果需要代码的话,请留下E-mail