不记得从哪里下的这个类,原来用着也没出什么问题,后来系统由windows2000换成windows xp后,将程序中CSizingControlBar实现停靠的窗体由停靠状态变成浮动状态时,窗体变得很小且内容全没了,窗体内容需要改变下窗体的大小才能刷出来,可在windows2000下怎么就没这个问题呢,我水平太差,找了半天也没找出原因。有谁用过这个类且遇到过类似的问题的帮个忙啊!

解决方案 »

  1.   

    http://www.cnblogs.com/smartstone/archive/2007/04/18/718597.html
    http://www.vckbase.com/document/viewdoc/?id=257
      

  2.   

    刚看了一下,估计是CSCBMiniDockFrameWnd状态没有保存,或者WM_SIZE消息处理不同造成的
    可以这样改一下
    void CSCBMiniDockFrameWnd::OnSize(UINT nType, int cx, int cy) 
    {
        CSizingControlBar* pBar = GetSizingControlBar();
        if ((pBar != NULL) && (GetStyle() & MFS_4THICKFRAME) == 0
            && pBar->IsVisible())
    {
            pBar->m_szFloat = CSize(cx + 4, cy + 4);

    //这样只是恢复为最小状态,你一可以指定一个固定值如,这样的话,直接用鼠标拖动也不能小于这个值
    pBar->m_szFloat.cx = max(pBar->m_szFloat.cx, 200);
    pBar->m_szFloat.cy = max(pBar->m_szFloat.cy, 300);
    //或者初始化时直接修改m_szMinFloat,那么就可以用下面的代码
    //pBar->m_szFloat.cx = max(pBar->m_szFloat.cx, pBar->m_szMinFloat.cx);
    //pBar->m_szFloat.cy = max(pBar->m_szFloat.cy, pBar->m_szMinFloat.cy);
    }    baseCSCBMiniDockFrameWnd::OnSize(nType, cx, cy);
    }