int CMyCotrolCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct){    if (COleControl::OnCreate(lpCreateStruct) == -1)       return -1;
}1、如果我想create 一个特定大小的控件,需要这么做呢,上面的代码create出来的是系统默认的,我需要自己定义的大小
需要怎么做?
非常感谢?2、定义了ctl_x, ctl_y, ctl_w, ctl_h, 4个属性,怎么把四个属性和控件关联起来呢 ??
当修改它们的稍后,控件大小或者位置会发生变化。 

解决方案 »

  1.   

    MoveWindow() /SetWindowPos() 来控制大小
      

  2.   

    我想在create的时候直接设置控件大小,应该有办法把 ???MoveWindow() /SetWindowPos() 来控制大小   可以用来在属性改变的稍后来用。
      

  3.   

    MoveWindow() /SetWindowPos() 也可以在Create的时候设置初始大小
      

  4.   

    int CMyCotrolCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct) { 
        lpCreateStruct->cx = xxx;
        lpCreateStruct->cy = xxx;
        if (COleControl::OnCreate(lpCreateStruct) == -1)       return -1; 

      

  5.   

        lpCreateStruct->cx = xxx; 
        lpCreateStruct->cy = xxx; 
        if (COleControl::OnCreate(lpCreateStruct) == -1)       return -1; 这个没有用,我已经试过了。谢谢。
      

  6.   


    估计是你在OnSize中又改回去了...
      

  7.   

    如果是 MFC, 重载 OnSetExtent
    BOOL CMyCllipseCtrl::OnSetExtent(LPSIZEL lpSizel) 

    lpSizel->cx=xxx; 
    lpSizel->cy=xxx; 
    return COleControl::OnSetExtent(lpSizel); 
    } ATL
    IOleObject::SetExtent 
      

  8.   

    我用过,下面的方法是可行的。
      HRESULT   hRet;  
      CComPtr<IOleInPlaceSite>   spCtlSite;  
    RECT rect;
     rect.bottom=xxx;
     rect.right=xxx;
      hRet   =   InternalGetSite(IID_IOleInPlaceSite,   (void**)&spCtlSite);  
      if   (SUCCEEDED(hRet))  
      {  
      if   (spCtlSite   !=   NULL)  
      {  
      hRet   =   spCtlSite->OnPosRectChange(&rect);  
      }  
      }   
      

  9.   

    SetControlSize(width,height);
    不能在构造函数中调用。放在初始化完成时或create完成后。
      

  10.   

    int width = 400;
    int height = 400; SetControlSize(width,height); RECT rect;
    GetRectInContainer(&rect);
    rect.right = rect.left + width;
    rect.bottom = rect.top + height;
    SetRectInContainer(&rect);
      

  11.   


    我是有个onsize 函数,不过是通过获取4个属性来变化的呀,所以,应该和前面的大小一样。不存在改不改回去的问题把?、
    我是新手,非常感谢大家!!
    继续关注中ctl_x, ctl_y, ctl_w, ctl_h, 四个属性来控制大小的,我会给这四个属性初始化,然后,
    创建出来的控件想要自己定义的大小,而不是系统默认的大小。onsize变化是按这四个属性来的,所以,在没有改变这四个属性前,应该不会出现改回去的问题。描述了这么多,不知道大家明白没有,呵呵,语文太差了。
      

  12.   


    这个我刚刚看msdn,也发现了这个函数,等下试试。
    还有就是,我怎么让我修改属性的值,让控件位置实时变化呢,
    好像调用了那个函数也没有用,ivai control 这个函数,具体什么名字忘了。呵呵,不好意思。