📄 previewview.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 + -