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

📄 bufwnd.cpp

📁 学习MFC的好东西
💻 CPP
字号:
////////////////////////////////////////////////////////////////
// Trace buffer class for TRACEWND applet.
//
#include "stdafx.h"
#include "bufwnd.h"

#ifdef _DEBUG
#undef THIS_FILE
static char BASED_CODE THIS_FILE[] = __FILE__;
#endif

BEGIN_MESSAGE_MAP(CBufWnd, CEdit)
	//{{AFX_MSG_MAP(CBufWnd)
	ON_WM_CREATE()
	ON_COMMAND(ID_EDIT_CLEAR_ALL, OnEditClearAll)
	ON_COMMAND(ID_EDIT_COPY, OnEditCopy)
	ON_COMMAND(ID_EDIT_SELECT_ALL, OnEditSelectAll)
	ON_UPDATE_COMMAND_UI(ID_EDIT_CLEAR_ALL, OnUpdateEditClearAll)
	ON_UPDATE_COMMAND_UI(ID_EDIT_COPY, OnUpdateEditCopy)
	ON_UPDATE_COMMAND_UI(ID_EDIT_SELECT_ALL, OnUpdateEditSelectAll)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

CBufWnd::CBufWnd()
{
}

CBufWnd::~CBufWnd()
{
}

//////////////////
// Create a multiline edit control
//
BOOL CBufWnd::Create(CWnd* pParentWnd, UINT nID)
{
	CRect rect;
	return CEdit::Create(
		WS_VISIBLE | WS_CHILD | WS_VSCROLL | WS_HSCROLL | ES_MULTILINE,
		rect, 
		pParentWnd, 
		nID);
}

//////////////////
// Window created: set font to 8pt Courier (monospace font).
//
int CBufWnd::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CEdit::OnCreate(lpCreateStruct) == -1)
		return -1;

	// Use 8pt Courier (monospace)
	LOGFONT logfont;
	memset(&logfont, 0, sizeof(logfont));

	HDC hdc = ::GetDC(NULL);
	ASSERT(hdc);

	// Windows voodoo, something to do with placating "twips", a 
	// mythical genie alleged to live in WYSIWYG software programs.
	//
	strcpy(logfont.lfFaceName, "Courier");
	logfont.lfHeight = -MulDiv(8, ::GetDeviceCaps(hdc, LOGPIXELSY), 72);
	logfont.lfWeight = FW_NORMAL;
	m_font.CreateFontIndirect(&logfont);
	::ReleaseDC(NULL, hdc);

	SetFont(&m_font);

	return 0;
}

/////////////////
// Helper returns TRUE of buffer is empty
//
BOOL CBufWnd::IsEmpty() 
{
	return GetLineCount() <= 1 && LineLength() == 0;
}

void CBufWnd::OnEditClearAll() 
{
	OnEditSelectAll();		// select all...
	Clear();						// ..then delete
}

void CBufWnd::OnUpdateEditClearAll(CCmdUI* pCmdUI)
{
	pCmdUI->Enable(!IsEmpty());	// enabled if not empty
}

void CBufWnd::OnEditCopy() 
{
	Copy();						// duh
}

void CBufWnd::OnUpdateEditCopy(CCmdUI* pCmdUI) 
{
	// Enabled if something selected
	int begin, end;
	GetSel(begin, end);
	pCmdUI->Enable(begin != end);
}

void CBufWnd::OnEditSelectAll() 
{
	SetSel(0, -1);		//  select whole buffer
}

void CBufWnd::OnUpdateEditSelectAll(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable(!IsEmpty());	// enabled if not empty
}

⌨️ 快捷键说明

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