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

📄 coloroptions.cpp

📁 vc++6.0开发网络典型应用实例导航 1. 本光盘提供了本书中所有的实例源程序文件。 2. 附录文件夹下是Winsock 函数参考以及错误码列表
💻 CPP
字号:
// ColorOptions.cpp : implementation file
//

#include "stdafx.h"
#include "Netmsg.h"
#include "ColorOptions.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CColorOptions property page

IMPLEMENT_DYNCREATE(CColorOptions, CPropertyPage)

CColorOptions::CColorOptions() : CPropertyPage(CColorOptions::IDD)
{
	//{{AFX_DATA_INIT(CColorOptions)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
	crNormalText = GetColor(COL_NORMALTEXT);
	crNotifyText = GetColor(COL_NOTIFYTEXT);
	crDisabled = GetColor(COL_DISABLED);
	crLineFrames = GetColor(COL_LINEFRAMES);
	crLightItems = GetColor(COL_LIGHTITEMS);
	crBtnBack = GetColor(COL_BTNBACK);
	crBtnActive = GetColor(COL_BTNACTIVE);
	crBtnOver = GetColor(COL_BTNOVER);
}

CColorOptions::~CColorOptions()
{

}

void CColorOptions::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPage::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CColorOptions)
		// NOTE: the ClassWizard will add DDX and DDV calls here
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CColorOptions, CPropertyPage)
	//{{AFX_MSG_MAP(CColorOptions)
	ON_WM_PAINT()
	ON_WM_LBUTTONUP()
	ON_BN_CLICKED(IDC_RESTOREDEFAULT, OnRestoredefault)
	ON_BN_CLICKED(IDC_GETWINCOLORS, OnGetwincolors)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CColorOptions message handlers

void CColorOptions::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	
	CBitmap bmExample;
	bmExample.LoadBitmap(IDB_DLGEXAMPLE);

	dc.DrawState(CPoint(70, 52), CSize(216, 182), bmExample, NULL);

	bmExample.DeleteObject();

	dc.MoveTo(235, 62);
	dc.LineTo(305, 38);
	dc.MoveTo(272, 153);
	dc.LineTo(305, 153);
	dc.MoveTo(262, 63);
	dc.LineTo(305, 75);
	dc.MoveTo(102, 202);
	dc.LineTo(53, 258);
	dc.MoveTo(155, 154);
	dc.LineTo(53, 127);
	dc.MoveTo(234, 214);
	dc.LineTo(177, 241);
	dc.MoveTo(238, 222);
	dc.LineTo(254, 241);
	dc.MoveTo(264, 222);
	dc.LineTo(335, 241);

	dc.FillSolidRect(310, 22, 48, 28, RGB(0, 0, 0));
	dc.FillSolidRect(311, 23, 46, 26, crNotifyText);

	dc.FillSolidRect(310, 65, 48, 28, RGB(0, 0, 0));
	dc.FillSolidRect(311, 66, 46, 26, crLineFrames);

	dc.FillSolidRect(310, 140, 48, 28, RGB(0, 0, 0));
	dc.FillSolidRect(311, 141, 46, 26, crLightItems);

	dc.FillSolidRect(1, 114, 48, 28, RGB(0, 0, 0));
	dc.FillSolidRect(2, 115, 46, 26, crNormalText);

	dc.FillSolidRect(1, 248, 48, 28, RGB(0, 0, 0));
	dc.FillSolidRect(2, 249, 46, 26, crDisabled);

	dc.FillSolidRect(150, 248, 48, 28, RGB(0, 0, 0));
	dc.FillSolidRect(151, 249, 46, 26, crBtnBack);

	dc.FillSolidRect(230, 248, 48, 28, RGB(0, 0, 0));
	dc.FillSolidRect(231, 249, 46, 26, crBtnActive);

	dc.FillSolidRect(310, 248, 48, 28, RGB(0, 0, 0));
	dc.FillSolidRect(311, 249, 46, 26, crBtnOver);


	// Do not call CPropertyPage::OnPaint() for painting messages
}

void CColorOptions::OnLButtonUp(UINT nFlags, CPoint point) 
{
	bool bModified = false;

	CRect rcNotifyText;
	CRect rcLineFrames;
	CRect rcLightItems;
	CRect rcNormalText;
	CRect rcDisabled;
	CRect rcBtnActive;
	CRect rcBtnOver;
	CRect rcBtnBack;

	rcNotifyText.SetRect(310, 22, 310 + 48, 22 + 28);
	rcLineFrames.SetRect(310, 65, 310 + 48, 65 + 28);
	rcLightItems.SetRect(310, 140, 310 + 48, 140 + 28);
	rcNormalText.SetRect(1, 114, 1 + 48, 114 + 28);
	rcDisabled.SetRect(1, 248, 1 + 48, 248 + 28);
	rcBtnBack.SetRect(151, 248, 151 + 48, 248 + 28);
	rcBtnActive.SetRect(230, 248, 230 + 48, 248 + 28);
	rcBtnOver.SetRect(310, 248, 310 + 48, 248 + 28);

	if (rcNotifyText.PtInRect(point))
	{
		crNotifyText = MyChooseColor(GetColor(COL_NOTIFYTEXT));
		bModified = true;
	}
	else if (rcLineFrames.PtInRect(point))
	{
		crLineFrames = MyChooseColor(GetColor(COL_LINEFRAMES));
		bModified = true;
	}
	else if (rcLightItems.PtInRect(point))
	{
		crLightItems = MyChooseColor(GetColor(COL_LIGHTITEMS));
		bModified = true;
	}
	else if (rcNormalText.PtInRect(point))
	{
		crNormalText = MyChooseColor(GetColor(COL_NORMALTEXT));
		bModified = true;
	}
	else if (rcDisabled.PtInRect(point))
	{
		crDisabled = MyChooseColor(GetColor(COL_DISABLED));
		bModified = true;
	}
	else if (rcBtnBack.PtInRect(point))
	{
		crBtnBack = MyChooseColor(GetColor(COL_BTNBACK));
		bModified = true;
	}
	else if (rcBtnOver.PtInRect(point))
	{
		crBtnOver = MyChooseColor(GetColor(COL_BTNOVER));
		bModified = true;
	}
	else if (rcBtnActive.PtInRect(point))
	{
		crBtnActive = MyChooseColor(GetColor(COL_BTNACTIVE));
		bModified = true;
	}

	if (bModified)
	{
		SetModified();
		Invalidate();
	}

	CPropertyPage::OnLButtonUp(nFlags, point);
}

COLORREF CColorOptions::MyChooseColor(COLORREF crColor)
{
	CHOOSECOLOR cc;
	static COLORREF acrCustClr[16];

	ZeroMemory(&cc, sizeof(CHOOSECOLOR));
	cc.lStructSize = sizeof(CHOOSECOLOR);
	cc.hwndOwner = GetSafeHwnd();
	cc.lpCustColors = (LPDWORD) acrCustClr;
	cc.rgbResult = crColor;
	cc.Flags = CC_FULLOPEN | CC_RGBINIT;
 
	if (ChooseColor(&cc)) 
	{
		return cc.rgbResult;
	}
	return crColor;
}

BOOL CColorOptions::OnApply() 
{
	::SetColor(COL_NOTIFYTEXT, crNotifyText);
	::SetColor(COL_LINEFRAMES, crLineFrames);
	::SetColor(COL_LIGHTITEMS, crLightItems);
	::SetColor(COL_NORMALTEXT, crNormalText);
	::SetColor(COL_DISABLED, crDisabled);
	::SetColor(COL_BTNBACK, crBtnBack);
	::SetColor(COL_BTNACTIVE, crBtnActive);
	::SetColor(COL_BTNOVER, crBtnOver);

	::RedrawEntireApplication();	

	return CPropertyPage::OnApply();
}

void CColorOptions::OnOK() 
{
	::SetColor(COL_NOTIFYTEXT, crNotifyText);
	::SetColor(COL_LINEFRAMES, crLineFrames);
	::SetColor(COL_LIGHTITEMS, crLightItems);
	::SetColor(COL_NORMALTEXT, crNormalText);
	::SetColor(COL_DISABLED, crDisabled);
	::SetColor(COL_BTNBACK, crBtnBack);
	::SetColor(COL_BTNACTIVE, crBtnActive);
	::SetColor(COL_BTNOVER, crBtnOver);

	::RedrawEntireApplication();	

	CPropertyPage::OnOK();
}

void CColorOptions::OnRestoredefault() 
{
	crDisabled = RGB(214, 215, 204);
	crLightItems = RGB(214, 223, 247);
	crLineFrames = RGB(0, 73, 181);
	crNotifyText = RGB(181, 203, 239);
	crNormalText = RGB(0, 0, 0);
	crBtnOver = RGB(224, 172, 44);
	crBtnActive = RGB(0, 0, 255);
	crBtnBack = RGB(255, 251, 240);
	SetModified();
	Invalidate();
}

void CColorOptions::OnGetwincolors() 
{
	crNormalText = GetSysColor(COLOR_WINDOWTEXT);
	crNotifyText = GetSysColor(COLOR_CAPTIONTEXT);
	crLineFrames = GetSysColor(COLOR_ACTIVECAPTION);
	crDisabled = GetSysColor(COLOR_GRAYTEXT);
	crLightItems = GetSysColor(COLOR_3DFACE);
	crBtnBack = crLightItems;
	crBtnActive = crLineFrames;
	crBtnOver = GetSysColor(COLOR_INACTIVECAPTION);
	SetModified();
	Invalidate();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -