BOOL CSettingsSheet::SkinMe(LPCTSTR pszSkin, UINT nIcon, BOOL bLanguage) { EnableBanner( FALSE ); m_szPages.cx = m_szPages.cy = 0; for ( int nPage = 0 ; nPage < GetPageCount() ; nPage++ ) { CSettingsPage* pPage = GetPage( nPage ); CDialogTemplate pTemplate; if ( pPage->GetTemplateName() == NULL ) continue; if ( pTemplate.Load( pPage->GetTemplateName() ) ) { CSize size; pTemplate.GetSizeInPixels( &size ); m_szPages.cx = max( m_szPages.cx, size.cx ); m_szPages.cy = max( m_szPages.cy, size.cy ); } } CRect rcWindow( 0, 0, m_szPages.cx + m_nListWidth + m_nListMargin, m_szPages.cy + + m_nButtonHeight + 8 + 8 + 2 ); CalcWindowRect( &rcWindow ); SetWindowPos( &wndTop, 0, 0, rcWindow.Width(), rcWindow.Height(), SWP_NOMOVE|SWP_NOZORDER ); CRect rcTree( 0, 2, m_nListWidth, 2 + m_szPages.cy ); m_wndTree.MoveWindow( &rcTree ); CRect rcButton( 8, 2 + m_szPages.cy + 8, 8 + m_nButtonWidth, 2 + m_szPages.cy + 8 + m_nButtonHeight ); m_wndOK.MoveWindow( &rcButton ); rcButton.OffsetRect( rcButton.Width() + 8, 0 ); m_wndCancel.MoveWindow( &rcButton ); rcButton.OffsetRect( rcButton.Width() + 8, 0 ); m_wndApply.MoveWindow( &rcButton ); CenterWindow(); SetActivePage( m_pPage ? m_pPage : m_pFirst ); return CSkinDialog::SkinMe( pszSkin, nIcon, bLanguage ); }
void CSettingsSheet::Layout() { TEXTMETRIC txtMetric; CDC* pDC = GetDC(); pDC->SelectObject( &CoolInterface.m_fntNormal ); pDC->GetTextMetrics( &txtMetric ); ReleaseDC( pDC ); m_nButtonHeight = ( txtMetric.tmHeight + txtMetric.tmExternalLeading ) + 10; m_szPages.cx = m_szPages.cy = 0; for ( int nPage = 0 ; nPage < GetPageCount() ; nPage++ ) { CSettingsPage* pPage = GetPage( nPage ); CDialogTemplate pTemplate; if ( pPage->GetTemplateName() == NULL ) continue; if ( pTemplate.Load( pPage->GetTemplateName() ) ) { CSize size; pTemplate.GetSizeInPixels( &size ); m_szPages.cx = max( m_szPages.cx, size.cx ); m_szPages.cy = max( m_szPages.cy, size.cy ); } } CRect rc( 0, 0, m_szPages.cx, m_szPages.cy ); rc.right += m_nListWidth + m_nListMargin; rc.right += m_nLeftMargin; rc.bottom += m_nTopMargin + m_nButtonHeight + 16; CalcWindowRect( &rc ); SetWindowPos( &wndTop, 0, 0, rc.Width(), rc.Height(), SWP_NOMOVE|SWP_NOZORDER ); rc.SetRect( m_nLeftMargin, m_nTopMargin, 0, 0 ); rc.right = rc.left + m_nListWidth; rc.bottom = rc.top + m_szPages.cy; m_wndTree.MoveWindow( &rc ); rc.SetRect( 8, rc.bottom + 8, 76, m_nButtonHeight ); rc.right += rc.left; rc.bottom += rc.top; m_wndOK.MoveWindow( &rc ); rc.OffsetRect( rc.Width() + 8, 0 ); m_wndCancel.MoveWindow( &rc ); rc.OffsetRect( rc.Width() + 8, 0 ); m_wndApply.MoveWindow( &rc ); }