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

📄 previewview.cpp

📁 将源代码转换成html,支持多操作系统
💻 CPP
字号:
// PreviewView.cpp : implementation of the CSCSPreviewView class
//

#include "stdafx.h"
#include "WinMkSCS.h"

#include "SCSDoc.h"
#include "PreviewView.h"
#include <direct.h>
#include <time.h>
#include <stdlib.h>
#include <string>
#include <fstream>
using namespace std;

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

/////////////////////////////////////////////////////////////////////////////
// CSCSPreviewView

IMPLEMENT_DYNCREATE(CSCSPreviewView, CView)

BEGIN_MESSAGE_MAP(CSCSPreviewView, CView)
	//{{AFX_MSG_MAP(CSCSPreviewView)
	ON_WM_RBUTTONDOWN()
	ON_COMMAND(ID_COLOURS_BACKGROUND, OnColoursBackground)
	ON_COMMAND(ID_COLOURS_COMMENT, OnColoursComment)
	ON_COMMAND(ID_COLOURS_KEYWORDS, OnColoursKeywords)
	ON_COMMAND(ID_COLOURS_NORMALTEXT, OnColoursNormaltext)
	ON_COMMAND(ID_COLOURS_NUMBERS, OnColoursNumbers)
	ON_COMMAND(ID_COLOURS_PREPROCESSOR, OnColoursPreprocessor)
	ON_COMMAND(ID_COLOURS_STRINGS, OnColoursStrings)
	ON_COMMAND(ID_COLOURS_RANDOMCOLOURS, OnColoursRandomcolours)
	ON_COMMAND(ID_FILE_EXPORT, OnFileExport)
	ON_COMMAND(ID_FILE_IMPORT, OnFileImport)
	ON_COMMAND(ID_COLOURS_TYPES, OnColoursTypes)
	ON_COMMAND(ID_COLOURS_SYMBOLS, OnColoursSymbols)
	ON_COMMAND(ID_COLOURS_SINGLEQUOTES, OnColoursSinglequotes)
	ON_COMMAND(ID_COLOURS_FLOATINGPOINTS, OnColoursFloatingpoints)
	ON_COMMAND(ID_COLOURS_BACKDROP, OnColoursBackdrop)
	ON_COMMAND(ID_EDIT_CLEARBACKDROP, OnEditClearbackdrop)
	ON_COMMAND(ID_EDIT_UNDO, OnEditUndo)
	ON_COMMAND(ID_VIEW_CEXAMPLE, OnViewCexample)
	ON_COMMAND(ID_VIEW_PERLEXAMPLE, OnViewPerlexample)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSCSPreviewView construction/destruction

CSCSPreviewView::CSCSPreviewView()
{
	m_pMemDC = NULL;
	m_UndoElement = -1;
	m_RedoElement = -1;
	m_Example = 1;

	_getcwd(m_wDir,255);
}

CSCSPreviewView::~CSCSPreviewView()
{
}

BOOL CSCSPreviewView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CSCSPreviewView drawing

void CSCSPreviewView::OnDraw(CDC* pDC)
{
	CSCSDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);

	CBrush Background(pDoc->Colours2[BGCOLOR]);

	CRect rect, rc;
	GetClientRect(&rect);

	rc.left   = 270;
	rc.right  = 290;
	rc.top    = 230;
	rc.bottom = 250;

	pDC->FillRect(rect,&Background);


	if(pDoc->Background != "") {
		if(NULL == m_pMemDC)
		{
			m_pMemDC = new CDC;
			m_pMemDC->CreateCompatibleDC(pDC);

			m_nHRes = GetSystemMetrics(SM_CXSCREEN);
			m_nVRes = GetSystemMetrics(SM_CYSCREEN);
		}

		HBITMAP hBMP = (HBITMAP)::LoadImage(	AfxGetInstanceHandle(),
							pDoc->Background,
							IMAGE_BITMAP,0,0,
							LR_LOADFROMFILE);

		BITMAP bmInfo;
		GetObject( hBMP, sizeof( BITMAP ), (LPSTR) &bmInfo ) ;

		int h, w;
		CRect previewArea;
		GetWindowRect(&previewArea);
		
		DeleteObject(SelectObject(m_pMemDC->m_hDC, hBMP));

		for(h = 0; h < previewArea.Height(); h += bmInfo.bmHeight) {
		
			for(w = 0; w < previewArea.Width(); w += bmInfo.bmWidth) {
						
				pDC->BitBlt(w, h, m_nHRes, m_nVRes, m_pMemDC, 0, 0, SRCCOPY);
			}		
		}

		delete m_pMemDC;
		m_pMemDC = NULL;
	}

	int pos = 276;
	for(int i = 0;i < 6;i++) {

		DWORD COLOUR_SQUARE;
		CString C;

		switch(i) {
			case 0: COLOUR_SQUARE = 0x0000ff; C = "w"; break;
			case 1: COLOUR_SQUARE = 0x00bbff; C = "e"; break;
			case 2: COLOUR_SQUARE = 0x00ffff; C = "b"; break;
			case 3: COLOUR_SQUARE = 0x00ff00; C = "c"; break;
			case 4: COLOUR_SQUARE = 0xff0000; C = "p"; break;
			case 5: COLOUR_SQUARE = 0xff00bb; C = "p"; break;
		}

		CBrush Webcpp(COLOUR_SQUARE);
		CBrush* webcpp;

		webcpp = pDC->SelectObject(&Webcpp);
		pDC->Rectangle(rc);

		pDC->SelectObject(webcpp);
		pDC->SetBkColor(COLOUR_SQUARE);
		pDC->TextOut(pos,231,C);

		rc.left  += 20;
		rc.right += 20;
		pos += 20;
	}

	LOGFONT logFont;
	logFont.lfHeight = 8;
	logFont.lfWidth = 0;
	logFont.lfEscapement = 0;
	logFont.lfOrientation = 0;
	logFont.lfWeight = FW_NORMAL;
	logFont.lfItalic = 0;
	logFont.lfUnderline = 0;
	logFont.lfStrikeOut = 0;
	logFont.lfCharSet = ANSI_CHARSET;
	logFont.lfOutPrecision = OUT_DEFAULT_PRECIS;
	logFont.lfClipPrecision = CLIP_DEFAULT_PRECIS;
	logFont.lfQuality = PROOF_QUALITY;
	logFont.lfPitchAndFamily = VARIABLE_PITCH | FF_ROMAN;
	strcpy(logFont.lfFaceName, "courier");

	CFont Font;
	Font.CreateFontIndirect(&logFont);
	pDC->SelectObject(&Font);

	pDC->SetBkMode(TRANSPARENT);
//	pDC->SetBkColor(pDoc->Colours2[BGCOLOR]);
	pDC->SetTextColor(pDoc->Colours2[NORTEXT]);

	if(m_Example == 1) {

		drawCpp(pDC,pDoc);
	} else {
		drawPerl(pDC,pDoc);
	}
}

void CSCSPreviewView::drawCpp(CDC* pDC, CSCSDoc* pDoc) {

	// C/C#/C++ Example
	pDC->SetTextColor(pDoc->Colours2[PREPROC]);
	pDC->TextOut(8,8,"#define");
	pDC->SetTextColor(pDoc->Colours2[NORTEXT]);
	pDC->TextOut(80,8,"PI_TO_THIRD_DECIMAL");
	pDC->SetTextColor(pDoc->Colours2[FLOATPT]);
	pDC->TextOut(240,8,"3.142");

	pDC->SetTextColor(pDoc->Colours2[PREPROC]);
	pDC->TextOut(8,24,"#define");
	pDC->SetTextColor(pDoc->Colours2[NORTEXT]);
	pDC->TextOut(80,24,"ASCII_SECTION_SIGN");
	pDC->SetTextColor(pDoc->Colours2[SINQUOT]);
	pDC->TextOut(240,24,"'

⌨️ 快捷键说明

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