📄 staticpage.cpp
字号:
// StaticPage.cpp : implementation file
//
#include "stdafx.h"
#include "Controls.h"
#include "StaticPage.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CStaticPage property page
IMPLEMENT_DYNCREATE(CStaticPage, CPropertyPage)
CStaticPage::CStaticPage() : CPropertyPage(CStaticPage::IDD)
{
//{{AFX_DATA_INIT(CStaticPage)
m_TextAlign = _T("");
m_bBorder = FALSE;
m_bClientEdge = FALSE;
m_bRightText = FALSE;
m_bModalFrame = FALSE;
m_bNoWrap = FALSE;
m_bStatic = FALSE;
m_bSunken = FALSE;
m_bTransparent = FALSE;
//}}AFX_DATA_INIT
m_psp.dwFlags &= ~PSP_HASHELP;
}
CStaticPage::~CStaticPage()
{
}
void CStaticPage::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CStaticPage)
DDX_Control(pDX, IDC_STATICSAMPLE, m_StaticSample);
DDX_CBString(pDX, IDC_STATICALIGNTEXT, m_TextAlign);
DDX_Check(pDX, IDC_STATICRIGHTTEXT, m_bRightText);
DDX_Control(pDX, IDC_STATICALIGNTEXT, m_TextAlignBox);
DDX_Control(pDX, IDC_STATICTEXT, m_StaticText);
DDX_Control(pDX, IDC_SETSTATICFONT, m_SetFont);
DDX_Control(pDX, IDC_SETSTATICCOLOR, m_SetColor);
DDX_Check(pDX, IDC_STATICBORDER, m_bBorder);
DDX_Check(pDX, IDC_STATICCLIENT, m_bClientEdge);
DDX_Check(pDX, IDC_STATICMODAL, m_bModalFrame);
DDX_Check(pDX, IDC_STATICNOWRAP, m_bNoWrap);
DDX_Check(pDX, IDC_STATICSTATIC, m_bStatic);
DDX_Check(pDX, IDC_STATICSUNKEN, m_bSunken);
DDX_Check(pDX, IDC_STATICTRANSPARENT, m_bTransparent);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CStaticPage, CPropertyPage)
//{{AFX_MSG_MAP(CStaticPage)
ON_EN_CHANGE(IDC_STATICTEXT, OnChangeStatictext)
ON_CBN_SELCHANGE(IDC_STATICALIGNTEXT, OnSelchangeStaticaligntext)
ON_BN_CLICKED(IDC_STATICRIGHTTEXT, OnStaticrighttext)
ON_BN_CLICKED(IDC_SETSTATICFONT, OnSetstaticfont)
ON_BN_CLICKED(IDC_SETSTATICCOLOR, OnSetstaticcolor)
ON_BN_CLICKED(IDC_STATICSUNKEN, OnStaticsunken)
ON_BN_CLICKED(IDC_STATICSTATIC, OnStaticstatic)
ON_BN_CLICKED(IDC_STATICTRANSPARENT, OnStatictransparent)
ON_BN_CLICKED(IDC_STATICNOWRAP, OnStaticnowrap)
ON_BN_CLICKED(IDC_STATICMODAL, OnStaticmodal)
ON_BN_CLICKED(IDC_STATICCLIENT, OnStaticclient)
ON_BN_CLICKED(IDC_STATICBORDER, OnStaticborder)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CStaticPage message handlers
BOOL CStaticPage::OnInitDialog()
{
CPropertyPage::OnInitDialog();
CString text;
LOGFONT lf;
COLORREF clr = (COLORREF) GetSysColor (COLOR_ACTIVEBORDER);
m_StaticSample.SetBkgndColor (clr);
m_StaticSample.GetWindowText (text);
m_StaticText.SetWindowText (text);
m_TextAlignBox.SelectString (-1, "Center");
// TODO: Add extra initialization here
CFont *font = GetFont();
font->GetLogFont (&lf);
m_Font.CreateFontIndirect (&lf);
m_StaticSample.SetFont (&m_Font);
m_dwStyleEx = 0;
m_dwStyle = m_StaticSample.GetStyle ();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CStaticPage::OnChangeStatictext()
{
CString text;
m_StaticText.GetWindowText (text);
m_StaticSample.SetWindowText (text);
}
void CStaticPage::OnSelchangeStaticaligntext()
{
int sel = m_TextAlignBox.GetCurSel ();
switch (sel)
{
case 0: // Left align
m_dwStyle &= ~(SS_CENTER | SS_RIGHT);
m_dwStyle |= SS_LEFT;
m_StaticSample.ModifyStyle (SS_CENTER | SS_RIGHT, SS_LEFT);
break;
case 1: // Right align
m_dwStyle &= ~(SS_LEFT | SS_CENTER);
m_dwStyle |= SS_RIGHT;
m_StaticSample.ModifyStyle (SS_CENTER | SS_LEFT, SS_RIGHT);
break;
case 2: // Center align
m_dwStyle &= ~(SS_LEFT | SS_RIGHT);
m_dwStyle |= SS_CENTER;
m_StaticSample.ModifyStyle (SS_LEFT | SS_RIGHT, SS_CENTER);
break;
default:
break;
}
m_StaticSample.Invalidate ();
}
void CStaticPage::OnStaticrighttext()
{
UpdateData (TRUE);
if (m_bRightText)
{
m_dwStyleEx |= WS_EX_RIGHT;
RecreateWindow();
}
else
{
m_dwStyleEx &= ~WS_EX_RIGHT;
RecreateWindow();
}
}
void CStaticPage::OnSetstaticfont()
{
LOGFONT lf;
m_Font.GetLogFont (&lf);
CFontDialog cf (&lf);
cf.m_cf.rgbColors = m_StaticSample.GetTextColor();
if (cf.DoModal() == IDCANCEL)
return;
cf.GetCurrentFont (&lf);
m_StaticSample.SetTextColor (cf.GetColor());
if (m_Font.m_hObject != NULL)
{
m_Font.DeleteObject ();
}
m_Font.CreateFontIndirect (&lf);
m_StaticSample.SetFont (&m_Font);
}
void CStaticPage::OnSetstaticcolor()
{
COLORREF clrBack = m_StaticSample.GetBkgndColor ();
CColorDialog cc (clrBack);
if (cc.DoModal () != IDCANCEL)
m_StaticSample.SetBkgndColor (cc.GetColor ());
}
void CStaticPage::OnStaticsunken()
{
UpdateData (TRUE);
if (m_bSunken)
{
m_dwStyle |= SS_SUNKEN;
}
else
{
m_dwStyle &= ~SS_SUNKEN;
}
RecreateWindow();
}
void CStaticPage::OnStatictransparent()
{
}
void CStaticPage::OnStaticnowrap()
{
// TODO: Add your control notification handler code here
}
void CStaticPage::OnStaticstatic()
{
UpdateData (TRUE);
if (m_bStatic)
{
m_dwStyleEx |= WS_EX_STATICEDGE;
}
else
{
m_dwStyleEx &= ~WS_EX_STATICEDGE;
}
RecreateWindow ();
}
void CStaticPage::OnStaticmodal()
{
UpdateData (TRUE);
if (m_bModalFrame)
{
m_dwStyleEx |= WS_EX_DLGMODALFRAME;
}
else
{
m_dwStyleEx &= ~WS_EX_DLGMODALFRAME;
}
RecreateWindow ();
}
void CStaticPage::OnStaticclient()
{
UpdateData (TRUE);
if (m_bClientEdge)
{
m_dwStyleEx |= WS_EX_CLIENTEDGE;
}
else
{
m_dwStyleEx &= ~WS_EX_CLIENTEDGE;
}
RecreateWindow ();
}
void CStaticPage::OnStaticborder()
{
UpdateData (TRUE);
if (m_bBorder)
{
m_dwStyle |= WS_BORDER;
}
else
{
m_dwStyle &= ~WS_BORDER;
}
RecreateWindow ();
}
void CStaticPage::RecreateWindow()
{
CString str;
m_StaticSample.GetWindowText (str);
DWORD dwStyle = m_StaticSample.GetStyle ();
DWORD dwStyleEx = m_StaticSample.GetExStyle ();
m_StaticSample.ShowWindow (SW_HIDE);
CRect rc;
m_StaticSample.GetWindowRect (&rc);
ScreenToClient (rc);
m_StaticSample.DestroyWindow();
m_StaticSample.CreateEx (m_dwStyleEx,
"Static",
"Static",
m_dwStyle,
rc,
this,
IDC_STATICSAMPLE);
m_StaticSample.ShowWindow (SW_SHOWNORMAL);
m_StaticSample.SetWindowText (str);
m_StaticSample.SetFont (&m_Font);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -