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

📄 staticpage.cpp

📁 VC源代码大全(精华版)
💻 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 + -