【VC开源代码栏目提醒】:网学会员,鉴于大家对VC开源代码十分关注,论文会员在此为大家搜集整理了“TWSCRIPTEDIT.CPP”一文,供大家参考学习!
/////////////////////////////////////////////////////////////////////////////
// Copyright (C) 1998 by Juraj Rojko jrojko@twist.cz
// All rights reserved
//
// TWScriptEdit.cpp : implementation file
//
#include "stdafx.h"
#include "TWScriptEdit.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CTWScriptEdit
CTWScriptEdit::CTWScriptEdit()
{
m_chComment = 1;
m_bCaseSensitive = FALSE;
m_bChangeCase = TRUE;
SetStringQuotes(_T("\""));
SetKeywordColor(RGB(0,0,255), FALSE);
SetConstantColor(RGB(0,0,0), TRUE);
SetCommentColor(RGB(0,128,0), FALSE);
SetNumberColor(RGB(255,0,255), FALSE);
SetStringColor(RGB(255,0,255), FALSE);
m_bInForcedChange = FALSE;
m_changeType = ctUndo;
m_crOldSel.cpMin = m_crOldSel.cpMax = 0;
}
CTWScriptEdit::~CTWScriptEdit()
{
}
void CTWScriptEdit::Initialize()
{
PARAFORMAT pf;
pf.cbSize = sizeof(PARAFORMAT);
pf.dwMask = PFM_TABSTOPS ;
pf.cTabCount = MAX_TAB_STOPS;
for( int itab = 0 ; itab < pf.cTabCount ; itab++ )
pf.rgxTabs[itab] = (itab + 1) * 1440/5 ;
SetParaFormat( pf );
CHARFORMAT cfDefault;
cfDefault.cbSize = sizeof(cfDefault);
cfDefault.dwEffects = CFE_PROTECTED;
cfDefault.dwMask = CFM_BOLD | CFM_FACE | CFM_SIZE | CFM_CHARSET | CFM_PROTECTED;
cfDefault.yHeight = 200;
cfDefault.bCharSet = 0xEE;
strcpy(cfDefault.szFaceName, _T("Courier New"));
SetDefaultCharFormat(cfDefault);
SetEventMask(ENM_CHANGE | ENM_SELCHANGE | ENM_PROTECTED);
}
void CTWScriptEdit::SetSLComment(TCHAR chComment, TCHAR chComment2)
{
m_chComment = chComment;
m_chComment2 = chComment2;
}
void CTWScriptEdit::SetSLComment(LPCTSTR lpszComment)
{
m_strComment = lpszComment;
}
void CTWScriptEdit::AddKeywords(LPCTSTR lpszKwd)
{
m_strKeywords = m_strKeywords + lpszKwd;
m_strKeywordsLower = m_strKeywords;
if (!m_bCaseSensitive)
m_strKeywordsLower.MakeLower();
}
void CTWScriptEdit::ClearKeywords()
{
m_strKeywords.Empty();
m_strKey
wordsLower.Empty();
}
void CTWScriptEdit::AddConstants(LPCTSTR lpszConst)
{
m_strConstants = m_strConstants + lpszConst;
m_strConstantsLower = m_strConstants;
if (!m_bCaseSensitive)
m_strConstantsLower.MakeLower();
}
void CTWScriptEdit::ClearConstants()
{
m_strConstants.Empty();
m_strConstantsLower.Empty();
}
void CTWScriptEdit::SetCaseSensitive(BOOL bSensitive)
{
m_bCaseSensitive = bSensitive;
}
void CTWScriptEdit::SetChangeCase(BOOL bChange)
{
m_bChangeCase = bChange;
}
void CTWScriptEdit::SetStringQuotes(LPCTSTR lpszStrQ)
{
m_strStringQuotes = lpszStrQ;
}
void CTWScriptEdit::SetKeywordColor(COLORREF clr, BOOL bBold)
{
m_icKeyword.clrColor = clr;
m_icKeyword.bBold = bBold;
}
void CTWScriptEdit::SetConstantColor(COLORREF clr, BOOL bBold)
{
m_icConstant.clrColor = clr;
m_icConstant.bBold = bBold;
}
void CTWScriptEdit::SetCommentColor(COLORREF clr, BOOL bBold)
{
m_icComment.clrColor = clr;
m_icComment.bBold = bBold;
}
void CTWScriptEdit::SetNumberColor(COLORREF clr, BOOL bBold)
{
m_icNumber.clrColor = clr;
m_icNumber.bBold = bBold;
}
void CTWScriptEdit::SetStringColor(COLORREF clr, BOOL bBold)
{
m_icString.clrColor = clr;
m_icString.bBold = bBold;
}
BEGIN_MESSAGE_MAP(CTWScriptEdit, CRichEditCtrl)
//{{AFX_MSG_MAP(CTWScriptEdit)
ON_CONTROL_REFLECT(EN_CHANGE, OnChange)
ON_WM_GETDLGCODE()
ON_WM_CHAR()
//}}AFX_MSG_MAP
ON_NOTIFY_REFLECT(EN_PROTECTED, OnProtected)
ON_NOTIFY_REFLECT(EN_SELCHANGE, OnSelChange)
ON_MESSAGE(WM_SETTEXT, OnSetText)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CTWScriptEdit message handlers
UINT CTWScriptEdit::OnGetDlgCode()
{
UINT uCode = CRichEditCtrl::OnGetDlgCode();
uCode = DLGC_WANTALLKEYS | DLGC_WANTARROWS | DLGC_WANTCHARS | DLGC_WANTMESSAGE | DLGC_WANTTAB;
return uCode;
}
void CTWScriptEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
if (nChar == '\t' && GetKeyState(VK_CONTROL) >= 0) {
ReplaceSel("\t");
return;
}
CRichEditCtrl::OnChar(nChar, nRepCnt, nFlags);
}
int CTWScriptEdit::IsKeyword(LPCTSTR lpszSymbol)
{
CString strSymbol; strSymbol.Format(" %s ", lpsz