|
|
// NCMetricsDlg.cpp : implementation file
//
#include "stdafx.h"
#include "mditest.h"
#include "NCMetricsDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__; #endif
/////////////////////////////////////////////////////////////////////////////
// CNCMetricsDlg dialog
CNCMetricsDlg::CNCMetricsDlg(CWnd* pParent /*=NULL*/) : CDialog(CNCMetricsDlg::IDD, pParent), _fDlgInit(FALSE), _fChanged(FALSE) { ZeroMemory( &_ncm, sizeof(_ncm) ); _ncm.cbSize = sizeof(_ncm); //{{AFX_DATA_INIT(CNCMetricsDlg)
//}}AFX_DATA_INIT
}
void CNCMetricsDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CNCMetricsDlg)
// NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CNCMetricsDlg, CDialog) //{{AFX_MSG_MAP(CNCMetricsDlg)
ON_EN_CHANGE(IDC_BORDERWIDTH, OnChanged) ON_BN_CLICKED(IDC_CAPTIONFONT, OnCaptionfont) ON_BN_CLICKED(IDC_CAPTIONFONT2, OnSmallCaptionFont) ON_BN_CLICKED(IDC_APPLY, OnApply) ON_EN_CHANGE(IDC_MENUWIDTH, OnChanged) ON_EN_CHANGE(IDC_MENUHEIGHT, OnChanged) ON_EN_CHANGE(IDC_SCROLLBARWIDTH, OnChanged) ON_EN_CHANGE(IDC_SCROLLBARHEIGHT, OnChanged) ON_EN_CHANGE(IDC_CAPTIONWIDTH, OnChanged) ON_EN_CHANGE(IDC_CAPTIONHEIGHT, OnChanged) ON_EN_CHANGE(IDC_CAPTIONWIDTH2, OnChanged) ON_EN_CHANGE(IDC_CAPTIONHEIGHT2, OnChanged) ON_EN_CHANGE(IDC_CAPTIONFONTDESCR, OnChanged) ON_EN_CHANGE(IDC_CAPTIONFONTDESCR2, OnChanged) ON_BN_CLICKED(IDOK, OnOk) //}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CNCMetricsDlg message handlers
BOOL CNCMetricsDlg::OnInitDialog() { CDialog::OnInitDialog(); _GetSPI( TRUE, TRUE ); _fDlgInit = TRUE; _UpdateControls(); return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CNCMetricsDlg::_UpdateControls() { ::EnableWindow( ::GetDlgItem( m_hWnd, IDC_APPLY ), _fChanged ); }
void CNCMetricsDlg::_GetSPI( BOOL fAcquire, BOOL fDlgSetValues ) { BOOL fSpi = fAcquire ? SystemParametersInfo( SPI_GETNONCLIENTMETRICS, 0, &_ncm, 0 ) : TRUE;
if( fDlgSetValues ) { SetDlgItemInt(IDC_BORDERWIDTH, _ncm.iBorderWidth ); SetDlgItemInt(IDC_SCROLLBARWIDTH, _ncm.iScrollWidth ); SetDlgItemInt(IDC_SCROLLBARHEIGHT, _ncm.iScrollHeight ); SetDlgItemInt(IDC_MENUWIDTH, _ncm.iMenuWidth ); SetDlgItemInt(IDC_MENUHEIGHT, _ncm.iMenuHeight );
SetDlgItemInt(IDC_CAPTIONWIDTH, _ncm.iCaptionWidth ); SetDlgItemInt(IDC_CAPTIONHEIGHT, _ncm.iCaptionHeight ); SetDlgItemInt(IDC_SMCAPTIONWIDTH, _ncm.iSmCaptionWidth ); SetDlgItemInt(IDC_SMCAPTIONHEIGHT, _ncm.iSmCaptionHeight );
int cyFont; TCHAR szFontDescr[128];
HDC hdc = ::GetDC(NULL);
cyFont = -MulDiv(_ncm.lfCaptionFont.lfHeight, 72, GetDeviceCaps(hdc, LOGPIXELSY)); wsprintf( szFontDescr, TEXT("%s, %dpt"), _ncm.lfCaptionFont.lfFaceName, cyFont ); SetDlgItemText(IDC_CAPTIONFONTDESCR, szFontDescr); cyFont = -MulDiv(_ncm.lfSmCaptionFont.lfHeight, 72, GetDeviceCaps(hdc, LOGPIXELSY)); wsprintf( szFontDescr, TEXT("%s, %dpt"), _ncm.lfSmCaptionFont.lfFaceName, cyFont ); SetDlgItemText(IDC_CAPTIONFONTDESCR2, szFontDescr);
::ReleaseDC(NULL, hdc);
_UpdateControls(); } }
void CNCMetricsDlg::_SetSPI( BOOL fAssign, BOOL fDlgSetValues ) { BOOL fGet = FALSE;
if( fDlgSetValues ) { _ncm.iBorderWidth = GetDlgItemInt(IDC_BORDERWIDTH); _ncm.iScrollWidth = GetDlgItemInt(IDC_SCROLLBARWIDTH); _ncm.iScrollHeight = GetDlgItemInt(IDC_SCROLLBARHEIGHT); _ncm.iMenuWidth = GetDlgItemInt(IDC_MENUWIDTH); _ncm.iMenuHeight = GetDlgItemInt(IDC_MENUHEIGHT);
_ncm.iCaptionWidth = GetDlgItemInt(IDC_CAPTIONWIDTH); _ncm.iCaptionHeight = GetDlgItemInt(IDC_CAPTIONHEIGHT); _ncm.iSmCaptionWidth = GetDlgItemInt(IDC_SMCAPTIONWIDTH); _ncm.iSmCaptionHeight = GetDlgItemInt(IDC_SMCAPTIONHEIGHT ); }
if( fAssign ) { SystemParametersInfo( SPI_SETNONCLIENTMETRICS, 0, &_ncm, SPIF_SENDCHANGE | SPIF_UPDATEINIFILE ); _fChanged = FALSE; } }
void CNCMetricsDlg::OnChanged() { _fChanged = _fDlgInit; _UpdateControls(); }
//-----------------------------------------------------------------------------------//
BOOL QueryCaptionFont( HWND hwndParent, LOGFONT* plf ) { LOGFONT lf = *plf; DWORD dwErr = 0; CHOOSEFONT cf; ZeroMemory( &cf, sizeof(cf) ); cf.lStructSize = sizeof(cf); cf.hwndOwner = hwndParent; cf.lpLogFont = &lf; cf.iPointSize = 0; cf.Flags = CF_INITTOLOGFONTSTRUCT|CF_EFFECTS|CF_FORCEFONTEXIST|CF_SCREENFONTS; cf.lCustData; cf.lpfnHook; cf.lpszStyle; cf.nFontType;
if( ChooseFont( &cf ) ) { *plf = lf; return TRUE; } else { dwErr = CommDlgExtendedError(); } return FALSE; }
//-----------------------------------------------------------------------------------//
void CNCMetricsDlg::OnCaptionfont() { if( QueryCaptionFont( m_hWnd, &_ncm.lfCaptionFont ) ) { _GetSPI(FALSE, TRUE); _fChanged = TRUE; _UpdateControls(); } }
//-----------------------------------------------------------------------------------//
void CNCMetricsDlg::OnSmallCaptionFont() { if( QueryCaptionFont( m_hWnd, &_ncm.lfSmCaptionFont ) ) { _GetSPI(FALSE, TRUE); _fChanged = TRUE; _UpdateControls(); } }
//-----------------------------------------------------------------------------------//
void CNCMetricsDlg::OnApply() { _SetSPI( TRUE, TRUE ); }
//-----------------------------------------------------------------------------------//
void CNCMetricsDlg::OnOk() { _SetSPI( TRUE, TRUE ); CDialog::OnOK(); } /////////////////////////////////////////////////////////////////////////////
// CThinFrameDlg dialog
CThinFrameDlg::CThinFrameDlg(CWnd* pParent /*=NULL*/) : CDialog(CThinFrameDlg::IDD, pParent) { //{{AFX_DATA_INIT(CThinFrameDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
void CThinFrameDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CThinFrameDlg)
// NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CThinFrameDlg, CDialog) //{{AFX_MSG_MAP(CThinFrameDlg)
// NOTE: the ClassWizard will add message map macros here
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CThinFrameDlg message handlers
|