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 Tech Support » Office 2007 themes hiding Windows taskbar. Collapse All
Subject Author Date
Luc Dion Sep 25, 2006 - 8:40 AM

Hi,
Iaˆ™m using Prof-UIS 2.60, and when the application is maximized it covers the entire screen, including the Windows Taskbar. The problem can be reproduced using the AviFrames-u.exe samples.

Steps:
1- Maximize the window.
2- Minimize the window.
3- Restore the window using the taskbar.
4- Now the application is covering the entire screen (including the taskbar).

Note: This behaviour is only present for application using Office 2007 themes, for example, this cannot be reproduced with the ResizableChildSheet.exe sample.

Thanks for your help,
Luc Dion

Paul Cowan Jul 12, 2007 - 2:22 PM

This is still happening in v2.70 of the library.

Luc Dion Jul 13, 2007 - 6:38 AM

Thanks, now it works fine!

Technical Support Sep 27, 2006 - 11:54 AM

Thank you for reporting the bug. Please update the source code of the CExtNcFrameImpl::NcFrameImpl_PostWindowProc() method to fix this bug:

void CExtNcFrameImpl::NcFrameImpl_PostWindowProc( LRESULT & lResult, UINT message, WPARAM wParam, LPARAM lParam )
{
    lResult;
    wParam;
    lParam;
    switch( message )
    {
    case WM_NCLBUTTONDBLCLK:
        if( m_bNcFrameImpl_RestoreBorder )
        {
            m_bNcFrameImpl_RestoreBorder = false;
            CWnd * pWndFrameImpl = NcFrameImpl_GetFrameWindow();
            pWndFrameImpl->ModifyStyle( WS_BORDER, 0 );
        }
    break;
    case WM_WINDOWPOSCHANGING:
        {
            LPWINDOWPOS lpWindowPos = 
                reinterpret_cast < LPWINDOWPOS > (lParam);
            ASSERT( lpWindowPos != NULL );
            m_bNcFrameImpl_DelatayedFrameRecalc =
                ( ( lpWindowPos->flags & SWP_FRAMECHANGED ) == 0 )
                    ? true : false;
            NcFrameImpl_SetupRgn( (WINDOWPOS *)lParam );
        }
    break;
    case WM_WINDOWPOSCHANGED:
        m_bNcFrameImpl_DelatayedFrameRecalc = false;
    break;
    case WM_GETMINMAXINFO:
        if( NcFrameImpl_IsSupported() )
        {
            CWnd * pWndFrameImpl = (CWnd *)NcFrameImpl_GetFrameWindow();
            ASSERT_VALID( pWndFrameImpl );
            CExtPaintManager::monitor_parms_t _mp;
            CExtPaintManager::stat_GetMonitorParms( _mp, pWndFrameImpl );
            LPMINMAXINFO pMMI = (LPMINMAXINFO)lParam;
            CSize _maxSize = _mp.m_rcWorkArea.Size();
            if( _mp.m_rcMonitor == _mp.m_rcWorkArea )
            {
                if( pMMI->ptMaxPosition.x < _mp.m_rcWorkArea.left )
                    pMMI->ptMaxPosition.x = _mp.m_rcWorkArea.left;
                if( pMMI->ptMaxPosition.y < _mp.m_rcWorkArea.top )
                    pMMI->ptMaxPosition.y = _mp.m_rcWorkArea.top;
                 _maxSize.cy -= 1;
            }
            if( NcFrameImpl_IsForceEmpty() )
            {
                if( ! NcFrameImpl_IsForceEmptyNcBorderEmpty() )
                {
                    CRect rc = NcFrameImpl_GetForceEmptyNcBorder();
                    _maxSize.cx += rc.left + rc.right;
                    _maxSize.cy += rc.top + rc.bottom;
                }
            }
            else
            {
                CRect rcNcBorders, rcThemePadding;
                NcFrameImpl_GetPM()->NcFrame_GetMetrics(
                    rcNcBorders,
                    rcThemePadding,
                    pWndFrameImpl
                    );
                _maxSize.cx += rcNcBorders.left + rcNcBorders.right;
                _maxSize.cy += rcNcBorders.top + rcNcBorders.bottom;
            }
            if( pMMI->ptMaxSize.x > _maxSize.cx )
                pMMI->ptMaxSize.x = _maxSize.cx;
            if( pMMI->ptMaxSize.y > _maxSize.cy )
                pMMI->ptMaxSize.y = _maxSize.cy;
        }
    break;
    }
}