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

📄 cedtviewmetric.cpp

📁 Crimson编辑器的英文版,完成从韩文版变成英文版的移植,并且附带可执行文件和注册表文件,无需原先的安装包,是改写编辑器的最理想选择.
💻 CPP
字号:
#include "stdafx.h"
#include "cedtHeader.h"



INT CCedtView::GetLogPixelsX(CDC * pDC)
{
	if( pDC ) return pDC->GetDeviceCaps(LOGPIXELSX);
	else return m_dcScreen.GetDeviceCaps(LOGPIXELSX);
}

INT CCedtView::GetLogPixelsY(CDC * pDC)
{
	if( pDC ) return pDC->GetDeviceCaps(LOGPIXELSY);
	else return m_dcScreen.GetDeviceCaps(LOGPIXELSY);
}

INT CCedtView::GetCharHeight(CDC * pDC)
{
	static INT nSequence = -1, nHeight = 0;

	if( pDC ) {
		TEXTMETRIC tm; pDC->GetTextMetrics( & tm ); 
		return tm.tmHeight; 
	} else if( nSequence != m_nScreenFontChangeSequence ) {
		TEXTMETRIC tm; m_dcScreen.GetTextMetrics( & tm );
		nSequence = m_nScreenFontChangeSequence; 
		return nHeight = tm.tmHeight; 
	} else return nHeight;
}

INT CCedtView::GetSpaceWidth(CDC * pDC)
{
	static INT nSequence = -1, nWidth = 0;

	if( pDC ) {
		CSize size = pDC->GetTextExtent(" ", 1);
		return size.cx; 
	} else if( nSequence != m_nScreenFontChangeSequence ) {
		CSize size = m_dcScreen.GetTextExtent(" ", 1);
		nSequence = m_nScreenFontChangeSequence;
		return nWidth = size.cx;
	} else return nWidth;
}

INT CCedtView::GetNumberWidth(CDC * pDC)
{
	static INT nSequence = -1, nWidth = 0;

	if( pDC ) {
		CSize size = pDC->GetTextExtent("0", 1);
		return size.cx; 
	} else if( nSequence != m_nScreenFontChangeSequence ) {
		CSize size = m_dcScreen.GetTextExtent("0", 1);
		nSequence = m_nScreenFontChangeSequence;
		return nWidth = size.cx;
	} else return nWidth;
}

INT CCedtView::GetAveCharWidth(CDC * pDC)
{
	static INT nSequence = -1, nWidth = 0;

	if( pDC ) {
		TEXTMETRIC tm; pDC->GetTextMetrics( & tm ); 
		return tm.tmAveCharWidth; 
	} else if( nSequence != m_nScreenFontChangeSequence ) {
		TEXTMETRIC tm; m_dcScreen.GetTextMetrics( & tm );
		nSequence = m_nScreenFontChangeSequence; 
		return nWidth = tm.tmAveCharWidth; 
	} else return nWidth;
}

INT CCedtView::GetMaxCharWidth(CDC * pDC)
{
	static INT nSequence = -1, nWidth = 0;

	if( pDC ) {
		TEXTMETRIC tm; pDC->GetTextMetrics( & tm ); 
		return tm.tmMaxCharWidth; 
	} else if( nSequence != m_nScreenFontChangeSequence ) {
		TEXTMETRIC tm; m_dcScreen.GetTextMetrics( & tm );
		nSequence = m_nScreenFontChangeSequence; 
		return nWidth = tm.tmMaxCharWidth; 
	} else return nWidth;
}

INT CCedtView::GetLeftMargin(CDC * pDC)
{
	if( pDC ) {
		INT nNumberWidth = GetNumberWidth( pDC  );
		return m_bPrintLineNumbers ? (4 * m_nLineNumberDigits + 8) * nNumberWidth / 4 : 0;
	} else {
		INT nNumberWidth = GetNumberWidth( NULL );
		INT nExtraMargin = m_bShowSelectionMargin ? 10 * nNumberWidth / 4 : 1;
		return m_bShowLineNumbers  ? (4 * m_nLineNumberDigits + 2) * nNumberWidth / 4 : nExtraMargin;
	}
}

INT CCedtView::GetLineHeight(CDC * pDC)
{
	static INT nSequence = -1, nHeight = 0;

	if( pDC ) {
		TEXTMETRIC tm; pDC->GetTextMetrics( & tm ); 
		return tm.tmHeight * m_nLineSpacing / 100;
	} else if( nSequence != m_nScreenFontChangeSequence ) {
		TEXTMETRIC tm; m_dcScreen.GetTextMetrics( & tm );
		nSequence = m_nScreenFontChangeSequence; nHeight = tm.tmHeight;
		return (nHeight = tm.tmHeight) * m_nLineSpacing / 100;
	} else return nHeight * m_nLineSpacing / 100;
}


INT CCedtView::GetCharWidth()
{
	CFormatedString & rLine = GetLineFromPosY( m_nCaretPosY );
	FORMATEDWORDINFO & rWord = GetWordFromPosX( rLine, m_nCaretPosX );
	if( rWord.m_sLength == 1 ) return rWord.m_nWidth;

	INT nIdxX = GetIdxXFromPosX(rLine, rWord, m_nCaretPosX );
	INT nLength = (rWord.m_cType == WT_DBCHAR) ? 2 : 1;

	CSize size = m_dcScreen.GetTextExtent((LPCTSTR)rLine + nIdxX, nLength);
	return size.cx;
}

INT CCedtView::GetLinesPerPage()
{
	CRect rect; GetClientRect( & rect );
	INT nLineHeight = GetLineHeight( NULL );

	return rect.Height() / nLineHeight;
}

⌨️ 快捷键说明

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