Professional UI Solutions
Site Map   /  Register
 
 

Forum

Please Log In to post a new message or reply to an existing one. If you are not registered, please register.

NOTE: Some forums may be read-only if you are not currently subscribed to our technical support services.

Forums » Prof-UIS General Discussion » Bug: the minimize button is hidden while the maximize button is disabled Collapse All
Subject Author Date
Edwin Geng Jun 28, 2006 - 9:36 PM

The minimize button is hidden while the maximize button is disabled when using the new interface styles of Prof-UIS version 2.54. I have fixed the bug by modifying line 36706 in function CExtPaintManagerOffice2007_Impl::NcFrame_GetRects in file ExtPaintManager.cpp.

Old code:
---------------------------
if( (dwWndStyle&WS_MAXIMIZEBOX) != 0 )

New code:
---------------------------
if( (dwWndStyle&WS_MINIMIZEBOX) != 0 )

Technical Support Jun 29, 2006 - 7:44 AM

We have already fixed this bug. Please update the source code for the CExtPaintManagerOffice2007_Impl::NcFrame_GetRects() method in the ../Prof-UIS/Src/ExtPaintManager.cpp file:

void CExtPaintManagerOffice2007_Impl::NcFrame_GetRects(
    CExtCmdIcon * pIcon,
    __EXT_MFC_SAFE_LPCTSTR strCaption,
    UINT nDrawTextAlignFlags,
    RECT & rcIcon,
    RECT & rcText,
    RECT & rcHelp,
    RECT & rcMinimize,
    RECT & rcMaximizeRestore,
    RECT & rcClose,
    const CWnd * pWnd,
    LPARAM lParam // = 0L
    ) const
{
    ASSERT_VALID( this );
    strCaption;
    nDrawTextAlignFlags;
LPMINMAXINFO pMinMaxInfo = NULL;
    ::SetRectEmpty( &rcIcon );
    ::SetRectEmpty( &rcText );
    ::SetRectEmpty( &rcHelp );
    ::SetRectEmpty( &rcMinimize );
    ::SetRectEmpty( &rcMaximizeRestore );
    ::SetRectEmpty( &rcClose );
    ASSERT( NcFrame_IsSupported( pWnd ) );
DWORD dwWndStyle = pWnd->GetStyle();
    if( (dwWndStyle&WS_CAPTION) == 0 )
        return;
//DWORD dwWndStyleEx = pWnd->GetExStyle();
CRect rcNcBorders, rcThemePadding;
    NcFrame_GetMetrics(
        rcNcBorders,
        rcThemePadding,
        pWnd,
        lParam
        );
CRect rcCaption =
        NcFrame_GetHtRect(
            HTCAPTION,
            false,
            true,
            true,
            pIcon,
            pWnd,
            pMinMaxInfo
            );
CRect rc = rcCaption;
    ::CopyRect( &rcText, &rcCaption );
bool bZoomed = pWnd->IsZoomed()? true : false;
 
    if( (dwWndStyle&WS_SYSMENU) != 0 )
    {
        //LPCTSTR strFrameActive = _T("Active");
        //const CExtSkinGlyph & glyphClose = m_Skin[_T("Button")][_T("FrameNcButton")][_T("Close")][strFrameActive].Glyph(_T("Normal"));
        CSize _sizeScClose(m_nCaptionHeightActive-2,m_nCaptionHeightActive-3); // = glyphClose.GetSize();
        CRect _rcOffsetScClose(0,0,0,0); // = glyphClose.GetOffset();
        rc.right -= bZoomed ? rcThemePadding.right : 1;
        rc.right -= _rcOffsetScClose.right;
        rc.left = rc.right - _sizeScClose.cx;
        rc.top = rcCaption.top + _rcOffsetScClose.top + ( bZoomed ? _rcOffsetScClose.bottom : 0 );
        rc.bottom = rc.top + _sizeScClose.cy;
        ::CopyRect( &rcClose, &rc );
        rc.OffsetRect( -_sizeScClose.cx, 0 );
        rcText.right = rcCaption.right - __EXT_MFC_SKINNED_CAPTION_TEXT_GAP;
        if( (dwWndStyle&WS_MAXIMIZEBOX) != 0 )
        {
            //const CExtSkinGlyph & glyphMaximize = m_Skin[_T("Button")][_T("FrameNcButton")][_T("Maximize")][strFrameActive].Glyph(_T("Normal"));
            CSize _sizeScMaximize(m_nCaptionHeightActive-2,m_nCaptionHeightActive-3); // = glyphMaximize.GetSize();
            CRect _rcOffsetScMaximize(0,0,0,0); // = glyphMaximize.GetOffset();
            rc.right -= _rcOffsetScMaximize.right;
            rc.top = rcCaption.top + _rcOffsetScMaximize.top + ( bZoomed ? _rcOffsetScMaximize.bottom : 0 );
            rc.left = rc.right - _sizeScMaximize.cx;
            rc.bottom = rc.top + _sizeScMaximize.cy;
            ::CopyRect( &rcMaximizeRestore, &rc );
            rc.OffsetRect( -_sizeScMaximize.cx, 0 );
            rcText.right = rcMaximizeRestore.left - __EXT_MFC_SKINNED_CAPTION_TEXT_GAP;
        } // if( (dwWndStyle&WS_MAXIMIZEBOX) != 0 )
        if( (dwWndStyle&WS_MINIMIZEBOX) != 0 )
        {
            //const CExtSkinGlyph & glyphMinimize = m_Skin[_T("Button")][_T("FrameNcButton")][_T("Minimize")][strFrameActive].Glyph(_T("Normal"));
            CSize _sizeScMinimize(m_nCaptionHeightActive-2,m_nCaptionHeightActive-3); // = glyphMinimize.GetSize();
            CRect _rcOffsetScMinimize(0,0,0,0); // = glyphMinimize.GetOffset();
            rc.right -= _rcOffsetScMinimize.right;
            rc.top = rcCaption.top + _rcOffsetScMinimize.top + ( bZoomed ? _rcOffsetScMinimize.bottom : 0 );
            rc.left = rc.right - _sizeScMinimize.cx;
            rc.bottom = rc.top + _sizeScMinimize.cy;
            ::CopyRect( &rcMinimize, &rc );
            rc.OffsetRect( -_sizeScMinimize.cx, 0 );
            rcText.right = rcMinimize.left - __EXT_MFC_SKINNED_CAPTION_TEXT_GAP;
        } // if( (dwWndStyle&WS_MINIMIZEBOX) != 0 )
//        if( (dwWndStyleEx&WS_EX_CONTEXTHELP) != 0 )
//        {
//            //const CExtSkinGlyph & glyphHelp = m_Skin[_T("Button")][_T("FrameNcButton")][_T("Help")][strFrameActive].Glyph(_T("Normal"));
//            CSize _sizeScHelp(m_nCaptionHeightActive-2,m_nCaptionHeightActive-3); // = glyphHelp.GetSize();
//            CRect _rcOffsetScHelp(0,0,0,0); // = glyphHelp.GetOffset();
//            rc.right -= _rcOffsetScHelp.right;
//            rc.top = rcCaption.top + _rcOffsetScHelp.top + ( bZoomed ? _rcOffsetScHelp.bottom : 0 );
//            rc.left = rc.right - _sizeScHelp.cx;
//            rc.bottom = rc.top + _sizeScHelp.cy;
//            ::CopyRect( &rcHelp, &rc );
//            rcText.right = rcHelp.left - __EXT_MFC_SKINNED_CAPTION_TEXT_GAP;
//        } // if( (dwWndStyleEx&WS_EX_CONTEXTHELP) != 0 )
        if(        pIcon != NULL
            &&    (! pIcon->IsEmpty() )
            )
        {
            CSize _sizeIcon = pIcon->GetSize();
            if( _sizeIcon.cx > 0 && _sizeIcon.cy > 0 )
            {
                int x = rcCaption.left + (bZoomed ? rcNcBorders.left : 0 );
                int y = rcCaption.top + ( rcCaption.Height() - _sizeIcon.cy ) / 2;
                ::SetRect(
                    &rcIcon,
                    x,
                    y,
                    x + _sizeIcon.cx,
                    y + _sizeIcon.cy
                    );
                rcText.left = rcIcon.right + __EXT_MFC_SKINNED_CAPTION_TEXT_GAP;
            } // if( _sizeIcon.cx > 0 && _sizeIcon.cy > 0 )
            else
                rcText.left += __EXT_MFC_SKINNED_CAPTION_TEXT_GAP;
        } // if( pIcon != NULL ...
        else
            rcText.left += __EXT_MFC_SKINNED_CAPTION_TEXT_GAP + (bZoomed ? rcNcBorders.left : 0 );
    } // if( (dwWndStyle&WS_SYSMENU) != 0 )
    else
    {
        rcText.left += __EXT_MFC_SKINNED_CAPTION_TEXT_GAP + (bZoomed ? rcNcBorders.left : 0 );
        rcText.right -= __EXT_MFC_SKINNED_CAPTION_TEXT_GAP;
    }
}