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 » Minimize button wasn't displayed Collapse All
Subject Author Date
Sujang Lee Jun 12, 2006 - 5:48 PM

I appied Office 2007 theme to project(Dialog based Project) successfully.

I enable minimize button and disable maxmize button in the Dialog proferties.

When I execute program, Close button is only displayed. Minimize button wasn’t displayed.


Please, help me....

Technical Support Jun 13, 2006 - 11:15 AM

Thank you for reporting the 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,
    LPMINMAXINFO pMinMaxInfo,
    LPARAM lParam
    ) const
{
    ASSERT_VALID( this );
    strCaption;
    nDrawTextAlignFlags;
    ::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;
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 )
    {
        CSize _sizeScClose(m_nCaptionHeightActive-2,m_nCaptionHeightActive-3);
        CRect _rcOffsetScClose(0,0,0,0);
        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 )
        {
            CSize _sizeScMaximize(m_nCaptionHeightActive-2,m_nCaptionHeightActive-3);
            CRect _rcOffsetScMaximize(0,0,0,0);
            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_MINIMIZEBOX) != 0 )
        {
            CSize _sizeScMinimize(m_nCaptionHeightActive-2,m_nCaptionHeightActive-3);
            CRect _rcOffsetScMinimize(0,0,0,0);
            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(        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;
            }
            else
                rcText.left += __EXT_MFC_SKINNED_CAPTION_TEXT_GAP;
        }
        else
            rcText.left += __EXT_MFC_SKINNED_CAPTION_TEXT_GAP + (bZoomed ? rcNcBorders.left : 0 );
    }
    else
    {
        rcText.left += __EXT_MFC_SKINNED_CAPTION_TEXT_GAP + (bZoomed ? rcNcBorders.left : 0 );
        rcText.right -= __EXT_MFC_SKINNED_CAPTION_TEXT_GAP;
    }
}

Sujang Lee Jun 13, 2006 - 5:41 PM

There is error.


CRect rcCaption =
NcFrame_GetHtRect(
HTCAPTION,
false,
true,
true,
pIcon,
pWnd,
pMinMaxInfo <--------- error point
);


\Src\ExtPaintManager.cpp(36675) : error C2664: ’NcFrame_GetHtRect’ : cannot convert parameter 7 from ’struct tagMINMAXINFO *’ to ’long’

Please.. I need more help....

Technical Support Jun 14, 2006 - 9:01 AM

We are sorry for this inconvenience. You should not have any problems with this version of code:

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
    ) const
{
    ASSERT_VALID( this );
    strCaption;
    nDrawTextAlignFlags;
    ::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;
CRect rcNcBorders, rcThemePadding;
    NcFrame_GetMetrics(
        rcNcBorders,
        rcThemePadding,
        pWnd,
        lParam
        );
CRect rcCaption =
        NcFrame_GetHtRect(
            HTCAPTION,
            false,
            true,
            true,
            pIcon,
            pWnd
            );
CRect rc = rcCaption;
    ::CopyRect( &rcText, &rcCaption );
bool bZoomed = pWnd->IsZoomed()? true : false;
 
    if( (dwWndStyle&WS_SYSMENU) != 0 )
    {
        CSize _sizeScClose(m_nCaptionHeightActive-2,m_nCaptionHeightActive-3);
        CRect _rcOffsetScClose(0,0,0,0);
        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 )
        {
            CSize _sizeScMaximize(m_nCaptionHeightActive-2,m_nCaptionHeightActive-3);
            CRect _rcOffsetScMaximize(0,0,0,0);
            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_MINIMIZEBOX) != 0 )
        {
            CSize _sizeScMinimize(m_nCaptionHeightActive-2,m_nCaptionHeightActive-3);
            CRect _rcOffsetScMinimize(0,0,0,0);
            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(        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;
            }
            else
                rcText.left += __EXT_MFC_SKINNED_CAPTION_TEXT_GAP;
        }
        else
            rcText.left += __EXT_MFC_SKINNED_CAPTION_TEXT_GAP + (bZoomed ? rcNcBorders.left : 0 );
    }
    else
    {
        rcText.left += __EXT_MFC_SKINNED_CAPTION_TEXT_GAP + (bZoomed ? rcNcBorders.left : 0 );
        rcText.right -= __EXT_MFC_SKINNED_CAPTION_TEXT_GAP;
    }
}