📄 fontseldlg.cpp
字号:
// FontSelDlg.cpp : 僀儞僾儕儊儞僥乕僔儑儞 僼傽僀儖
//
#include "stdafx.h"
#include "wisbarsetup.h"
#include "FontSelDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
struct {
int iPoint ;
int iSize ;
} tblSizes[] = {
{ 6, -9 },
{ 7, -10 },
{ 8, -11 },
{ 9, -12 },
{ 10,-13 },
{ 11,-15 },
{ 12,-16 },
{ 14,-19 },
{ 16,-21 },
{ 20,-27 },
{ 24,-32 },
{ 28,-37 },
{ 36,-48 },
{ 0,0 }
};
/////////////////////////////////////////////////////////////////////////////
// CFontSelDlg 僟僀傾儘僌
CFontSelDlg::CFontSelDlg(CWnd* pParent /*=NULL*/)
: CDialog(CFontSelDlg::IDD, pParent),
m_iSize(-12),
m_strFont(_T("Tahoma"))
{
//{{AFX_DATA_INIT(CFontSelDlg)
m_bBold = FALSE;
m_bItalic = FALSE;
//}}AFX_DATA_INIT
}
void CFontSelDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CFontSelDlg)
DDX_Control(pDX, IDC_BTNCOLOR, m_btnColor);
DDX_Control(pDX, IDC_FONTSIZE, m_cmbSize);
DDX_Control(pDX, IDC_FONT, m_cmbFont);
DDX_Check(pDX, IDC_BOLD, m_bBold);
DDX_Check(pDX, IDC_ITALIC, m_bItalic);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CFontSelDlg, CDialog)
//{{AFX_MSG_MAP(CFontSelDlg)
ON_BN_CLICKED(IDC_BTNCOLOR, OnBtncolor)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CFontSelDlg 儊僢僙乕僕 僴儞僪儔
/////////////////////////////////////////////////////////////////////////////
// 弶婜張棟
BOOL CFontSelDlg::OnInitDialog()
{
CDialog::OnInitDialog();
int iSel = 0 ;
// 僼僅儞僩傪楍嫇
HDC hDC = ::GetDC( m_hWnd );
EnumFontFamilies( hDC,NULL,(FONTENUMPROC)EnumFontProc,(LPARAM)&m_cmbFont );
::ReleaseDC( m_hWnd,hDC );
if ( m_strFont != _T("") ) {
iSel = m_cmbFont.FindStringExact( -1,m_strFont );
if ( iSel == CB_ERR ) {
iSel = 0 ;
}
}
m_cmbFont.SetCurSel( iSel );
// 僒僀僘丒儕僗僩嶌惉
CString strBuf ;
iSel = 0 ;
for ( int iIdx = 0 ; tblSizes[iIdx].iPoint != 0 ; iIdx++ ) {
strBuf.Format( _T("%d"),tblSizes[iIdx].iPoint );
m_cmbSize.AddString( strBuf );
if ( tblSizes[iIdx].iSize == m_iSize ) {
iSel = iIdx ;
}
}
m_cmbSize.SetCurSel( iSel );
return( TRUE );
}
/////////////////////////////////////////////////////////////////////////////
// 僼僅儞僩楍嫇僐乕儖僶僢僋
int CALLBACK CFontSelDlg::EnumFontProc( ENUMLOGFONT *lpelfe,TEXTMETRIC *lpntme,int iFontType,LPARAM lParam )
{
// 廲彂偒丄僾儘億乕僔儑僫儖偼彍奜
// if ( (lpelfe->elfLogFont.lfFaceName[0] == TEXT('@')) ||
// (lpelfe->elfLogFont.lfCharSet != SHIFTJIS_CHARSET) ) {
if ( lpelfe->elfLogFont.lfFaceName[0] == TEXT('@') ) {
return( TRUE );
}
CComboBox* pCmb = (CComboBox*)lParam ;
// 僼僅儞僩柤傪楍嫇
pCmb->AddString( lpelfe->elfLogFont.lfFaceName );
return( TRUE );
}
/////////////////////////////////////////////////////////////////////////////
// 妋掕
void CFontSelDlg::OnOK()
{
m_cmbFont.GetWindowText( m_strFont );
m_iSize = tblSizes[m_cmbSize.GetCurSel()].iSize ;
CDialog::OnOK();
}
/////////////////////////////////////////////////////////////////////////////
// SelectColor - Allows the user to select the font color
void CFontSelDlg::SelectColor(COLORREF &cr)
{
CHOOSECOLOR cc ;
COLORREF rgcrCustom[16];
ZeroMemory( &cc,sizeof(cc) );
memset( rgcrCustom,0xff,sizeof(rgcrCustom) );
cc.lStructSize = sizeof(cc);
cc.hwndOwner = m_hWnd ;
cc.Flags = CC_RGBINIT|CC_SOLIDCOLOR ;
cc.lpCustColors = rgcrCustom ;
cc.rgbResult = cr ;
if ( !ChooseColor(&cc) ) {
return ;
}
cr = cc.rgbResult ;
}
void CFontSelDlg::OnBtncolor()
{
SelectColor(m_Color);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -