⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 editpage.cpp

📁 这些源代码
💻 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 + -