📄 editpage.cpp
字号:
// EditPage.cpp : implementation file
//
#include "stdafx.h"
#include "Controls.h"
#include "EditPage.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CEditPage property page
IMPLEMENT_DYNCREATE(CEditPage, CPropertyPage)
CEditPage::CEditPage() : CPropertyPage(CEditPage::IDD)
{
//{{AFX_DATA_INIT(CEditPage)
m_TextAlign = _T("");
m_bRightText = FALSE;
m_bBorder = FALSE;
m_bClientEdge = FALSE;
m_bModalFrame = FALSE;
m_bNoWrap = FALSE;
m_bStatic = FALSE;
m_bPassword = FALSE;
m_bTransparent = FALSE;
m_bHorzScroll = FALSE;
m_bMultiline = FALSE;
m_bVertScroll = FALSE;
m_bWantReturn = FALSE;
m_bAutoVScroll = FALSE;
m_bAutoHScroll = FALSE;
//}}AFX_DATA_INIT
m_psp.dwFlags &= ~PSP_HASHELP;
}
CEditPage::~CEditPage()
{
}
void CEditPage::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CEditPage)
DDX_Control(pDX, IDC_EDITSAMPLE, m_EditSample);
DDX_Control(pDX, IDC_EDITMESSAGE, m_EditMessage);
DDX_CBString(pDX, IDC_EDITALIGNTEXT, m_TextAlign);
DDX_Check(pDX, IDC_EDITRIGHTTEXT, m_bRightText);
DDX_Control(pDX, IDC_EDITALIGNTEXT, m_TextAlignBox);
DDX_Control(pDX, IDC_SETEDITFONT, m_SetFont);
DDX_Control(pDX, IDC_SETEDITCOLOR, m_SetColor);
DDX_Check(pDX, IDC_EDITBORDER, m_bBorder);
DDX_Check(pDX, IDC_EDITCLIENT, m_bClientEdge);
DDX_Check(pDX, IDC_EDITMODAL, m_bModalFrame);
DDX_Check(pDX, IDC_EDITNOWRAP, m_bNoWrap);
DDX_Check(pDX, IDC_EDITSTATIC, m_bStatic);
DDX_Check(pDX, IDC_EDITPASSWORD, m_bPassword);
DDX_Check(pDX, IDC_EDITTRANSPARENT, m_bTransparent);
DDX_Check(pDX, IDC_EDITHORZSCROLL, m_bHorzScroll);
DDX_Check(pDX, IDC_EDITMULTILINE, m_bMultiline);
DDX_Check(pDX, IDC_EDITVERTSCROLL, m_bVertScroll);
DDX_Check(pDX, IDC_EDITWANTRETURN, m_bWantReturn);
DDX_Check(pDX, IDC_EDITAUTOVSCROLL, m_bAutoVScroll);
DDX_Check(pDX, IDC_EDITAUTOHSCROLL, m_bAutoHScroll);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CEditPage, CPropertyPage)
//{{AFX_MSG_MAP(CEditPage)
ON_CBN_SELCHANGE(IDC_EDITALIGNTEXT, OnSelchangeEditaligntext)
ON_BN_CLICKED(IDC_EDITRIGHTTEXT, OnEditrighttext)
ON_BN_CLICKED(IDC_SETEDITFONT, OnSetEditfont)
ON_BN_CLICKED(IDC_SETEDITCOLOR, OnSetEditcolor)
ON_BN_CLICKED(IDC_EDITPASSWORD, OnEditpassword)
ON_BN_CLICKED(IDC_EDITSTATIC, OnEditstatic)
ON_BN_CLICKED(IDC_EDITTRANSPARENT, OnEdittransparent)
ON_BN_CLICKED(IDC_EDITNOWRAP, OnEditnowrap)
ON_BN_CLICKED(IDC_EDITMODAL, OnEditmodal)
ON_BN_CLICKED(IDC_EDITCLIENT, OnEditclient)
ON_BN_CLICKED(IDC_EDITBORDER, OnEditborder)
ON_BN_CLICKED(IDC_EDITHORZSCROLL, OnEdithorzscroll)
ON_BN_CLICKED(IDC_EDITMULTILINE, OnEditmultiline)
ON_BN_CLICKED(IDC_EDITVERTSCROLL, OnEditvertscroll)
ON_EN_CHANGE(IDC_EDITSAMPLE, OnChangeEditsample)
ON_EN_ERRSPACE(IDC_EDITSAMPLE, OnErrspaceEditsample)
ON_EN_HSCROLL(IDC_EDITSAMPLE, OnHscrollEditsample)
ON_EN_KILLFOCUS(IDC_EDITSAMPLE, OnKillfocusEditsample)
ON_EN_MAXTEXT(IDC_EDITSAMPLE, OnMaxtextEditsample)
ON_EN_SETFOCUS(IDC_EDITSAMPLE, OnSetfocusEditsample)
ON_EN_UPDATE(IDC_EDITSAMPLE, OnUpdateEditsample)
ON_EN_VSCROLL(IDC_EDITSAMPLE, OnVscrollEditsample)
ON_BN_CLICKED(IDC_EDITAUTOVSCROLL, OnEditautovscroll)
ON_BN_CLICKED(IDC_EDITWANTRETURN, OnEditwantreturn)
ON_BN_CLICKED(IDC_EDITAUTOHSCROLL, OnEditautohscroll)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CEditPage message handlers
BOOL CEditPage::OnInitDialog()
{
CPropertyPage::OnInitDialog();
LOGFONT lf;
m_TextAlignBox.SelectString (-1, "Left");
// TODO: Add extra initialization here
// m_dwStyleEx = m_EditSample.GetExStyle();
CFont *font = GetFont();
font->GetLogFont (&lf);
m_Font.CreateFontIndirect (&lf);
m_EditSample.SetFont (&m_Font);
m_dwStyleEx = 0;
m_dwStyle = m_EditSample.GetStyle ();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CEditPage::OnSelchangeEditaligntext()
{
int sel = m_TextAlignBox.GetCurSel ();
switch (sel)
{
case 0: // Left align
m_dwStyle &= ~(ES_CENTER | ES_RIGHT);
m_dwStyle |= ES_LEFT;
m_EditSample.ModifyStyle (ES_CENTER | ES_RIGHT, ES_LEFT);
break;
case 1: // Right align
m_dwStyle &= ~(ES_LEFT | ES_CENTER);
m_dwStyle |= ES_RIGHT;
m_EditSample.ModifyStyle (ES_CENTER | ES_LEFT, ES_RIGHT);
break;
case 2: // Center align
m_dwStyle &= ~(ES_LEFT | ES_RIGHT);
m_dwStyle |= ES_CENTER;
m_EditSample.ModifyStyle (ES_LEFT | ES_RIGHT, ES_CENTER);
break;
default:
break;
}
// m_EditSample.Invalidate ();
RecreateWindow ();
}
void CEditPage::OnEditrighttext()
{
UpdateData (TRUE);
if (m_bRightText)
{
m_dwStyleEx |= WS_EX_RIGHT;
RecreateWindow();
}
else
{
m_dwStyleEx &= ~WS_EX_RIGHT;
RecreateWindow();
}
}
void CEditPage::OnSetEditfont()
{
LOGFONT lf;
m_Font.GetLogFont (&lf);
CFontDialog cf (&lf);
cf.m_cf.rgbColors = m_EditSample.GetTextColor();
if (cf.DoModal() == IDCANCEL)
return;
cf.GetCurrentFont (&lf);
m_EditSample.SetTextColor (cf.GetColor());
if (m_Font.m_hObject != NULL)
{
m_Font.DeleteObject ();
}
m_Font.CreateFontIndirect (&lf);
m_EditSample.SetFont (&m_Font);
}
void CEditPage::OnSetEditcolor()
{
COLORREF clrBack = m_EditSample.GetBkgndColor ();
CColorDialog cc (clrBack);
if (cc.DoModal () != IDCANCEL)
m_EditSample.SetBkgndColor (cc.GetColor ());
}
void CEditPage::OnEditpassword()
{
UpdateData (TRUE);
if (m_bPassword)
{
m_dwStyle |= ES_PASSWORD;
}
else
{
m_dwStyle &= ~ES_PASSWORD;
}
RecreateWindow();
}
void CEditPage::OnEdittransparent()
{
}
void CEditPage::OnEditnowrap()
{
// TODO: Add your control notification handler code here
}
void CEditPage::OnEditstatic()
{
UpdateData (TRUE);
if (m_bStatic)
{
m_dwStyleEx |= WS_EX_STATICEDGE;
}
else
{
m_dwStyleEx &= ~WS_EX_STATICEDGE;
}
RecreateWindow ();
}
void CEditPage::OnEditmodal()
{
UpdateData (TRUE);
if (m_bModalFrame)
{
m_dwStyleEx |= WS_EX_DLGMODALFRAME;
}
else
{
m_dwStyleEx &= ~WS_EX_DLGMODALFRAME;
}
RecreateWindow ();
}
void CEditPage::OnEditclient()
{
UpdateData (TRUE);
if (m_bClientEdge)
{
m_dwStyleEx |= WS_EX_CLIENTEDGE;
}
else
{
m_dwStyleEx &= ~WS_EX_CLIENTEDGE;
}
RecreateWindow ();
}
void CEditPage::OnEditborder()
{
UpdateData (TRUE);
if (m_bBorder)
{
m_dwStyle |= WS_BORDER;
}
else
{
m_dwStyle &= ~WS_BORDER;
}
RecreateWindow ();
}
void CEditPage::RecreateWindow()
{
CString str;
m_EditSample.GetWindowText (str);
DWORD dwStyle = m_EditSample.GetStyle ();
DWORD dwStyleEx = m_EditSample.GetExStyle ();
m_EditSample.ShowWindow (SW_HIDE);
CRect rc;
m_EditSample.GetWindowRect (&rc);
ScreenToClient (rc);
int nStart, nEnd;
m_EditSample.GetSel (nStart, nEnd);
m_EditSample.DestroyWindow();
m_EditSample.CreateEx (m_dwStyleEx,
"Edit",
"Edit",
m_dwStyle,
rc,
this,
IDC_EDITSAMPLE);
m_EditSample.ShowWindow (SW_SHOWNORMAL);
m_EditSample.SetWindowText (str);
m_EditSample.SetFont (&m_Font);
m_EditSample.SetSel (nStart, nEnd);
}
void CEditPage::OnEdithorzscroll()
{
UpdateData (TRUE);
if (m_bHorzScroll)
{
m_dwStyle |= WS_HSCROLL;
}
else
{
m_dwStyle &= ~WS_HSCROLL;
}
RecreateWindow ();
}
void CEditPage::OnEditvertscroll()
{
UpdateData (TRUE);
if (m_bVertScroll)
{
m_dwStyle |= WS_VSCROLL;
}
else
{
m_dwStyle &= ~WS_VSCROLL;
}
RecreateWindow ();
}
void CEditPage::OnEditmultiline()
{
UpdateData (TRUE);
if (m_bMultiline)
{
m_dwStyle |= ES_MULTILINE;
}
else
{
m_dwStyle &= ~ES_MULTILINE;
}
RecreateWindow ();
}
void CEditPage::OnEditautohscroll()
{
UpdateData (TRUE);
if (m_bAutoHScroll)
{
m_dwStyle |= ES_AUTOHSCROLL;
// m_EditSample.ModifyStyle (0, ES_AUTOVSCROLL, TRUE);
}
else
{
m_dwStyle &= ~ES_AUTOHSCROLL;
// m_EditSample.ModifyStyle (ES_AUTOVSCROLL, 0, TRUE);
}
RecreateWindow ();
}
void CEditPage::OnEditautovscroll()
{
UpdateData (TRUE);
if (m_bAutoVScroll)
{
m_dwStyle |= ES_AUTOVSCROLL;
// m_EditSample.ModifyStyle (0, ES_AUTOVSCROLL, TRUE);
}
else
{
m_dwStyle &= ~ES_AUTOVSCROLL;
// m_EditSample.ModifyStyle (ES_AUTOVSCROLL, 0, TRUE);
}
RecreateWindow ();
}
void CEditPage::OnEditwantreturn()
{
UpdateData (TRUE);
if (m_bAutoVScroll)
{
m_dwStyle |= ES_WANTRETURN;
// m_EditSample.ModifyStyle (0, ES_WANTRETURN, TRUE);
}
else
{
m_dwStyle &= ~ES_WANTRETURN;
// m_EditSample.ModifyStyle (ES_WANTRETURN, 0, TRUE);
}
RecreateWindow ();
}
//
// Handlers for messages sent from the edit control
//
void CEditPage::OnChangeEditsample()
{
CString Message;
Message.Format ("EN_CHANGE (%d)", EN_CHANGE);
m_EditMessage.SetWindowText (Message);
}
void CEditPage::OnErrspaceEditsample()
{
CString Message;
Message.Format ("EN_ERRSPACE (%d)", EN_ERRSPACE);
m_EditMessage.SetWindowText (Message);
}
void CEditPage::OnHscrollEditsample()
{
CString Message;
Message.Format ("EN_HSCROLL (%d)", EN_HSCROLL);
m_EditMessage.SetWindowText (Message);
}
void CEditPage::OnKillfocusEditsample()
{
CString Message;
Message.Format ("EN_KILLFOCUS (%d)", EN_KILLFOCUS);
m_EditMessage.SetWindowText (Message);
}
void CEditPage::OnMaxtextEditsample()
{
CString Message;
Message.Format ("EN_MAXTEXT (%d)", EN_MAXTEXT);
m_EditMessage.SetWindowText (Message);
}
void CEditPage::OnSetfocusEditsample()
{
CString Message;
Message.Format ("EN_SETFOCUS (%d)", EN_SETFOCUS);
m_EditMessage.SetWindowText (Message);
}
void CEditPage::OnUpdateEditsample()
{
CString Message;
Message.Format ("EN_CHANGE (%d)", EN_CHANGE);
m_EditMessage.SetWindowText (Message);
}
void CEditPage::OnVscrollEditsample()
{
CString Message;
Message.Format ("EN_VSCROLL (%d)", EN_VSCROLL);
m_EditMessage.SetWindowText (Message);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -