【VC开源代码栏目提醒】:网学会员VC开源代码为您提供COLORSTRING.CPP参考,解决您在COLORSTRING.CPP学习中工作中的难题,参考学习。
#include "stdafx.h"
#include "ColorString.h"
// Copyright (c) 1996-1997, Keith Rule
// You may freely use or modify this code provided this
// copyright is included in all derived versions.
UINT AFX_CDECL CColorStringBkgThread(LPVOID object)
{
CColorString& text = *((CColorString*) object);
long len, count = 0;
CColorArray renderColor; // Hmm - This shouldn't be declared here,
// it causes a leak when the thread is terminated.
// This isn't exactly efficent, but hey it's running in
// the background
for (;;) {
len = text.GetLength();
if (text.CommentPos() < len || text.KeywordPos() < len || text.QuotePos() < len) {
renderColor.SetSize(len);
renderColor.SetColor(text.m_defaultColor, 0, len);
text.CommentPos(0); text.KeywordPos(0); text.QuotePos(0);
if (text.m_color.GetSize() != len) {
text.m_color.SetSize(len);
}
if (!text.ParseKeywords(renderColor)) goto restart;
if (!text.ParseQuotes(renderColor)) goto restart;
if (!text.ParseComments(renderColor)) goto restart;
if (renderColor != text.m_color && len == text.GetLength())
{
text.m_color = renderColor;
text.DoUpdate(count > 0);
}
}
restart:
::Sleep(100);
count++;
}
return 0;
}
CColorString::CColorString(BOOL bUseThread) : CStringEx(),
m_defaultColor(RGB(0, 0, 0)), m_bkgThread(NULL),
m_dQuoteColor(RGB(0, 0, 0)), m_sQuoteColor(RGB(0, 0, 0)), m_updateLevel(0),
CThreadLock(), m_bUseThread(bUseThread), m_kPos(0), m_cPos(0), m_qPos(0)
{
//TRACE("ColorString() - %x File: %s, Line: %d\r\n", this, __FILE__, __LINE__);
}
CColorString::CColorString(const CString& stringSrc, BOOL bUseThread) : CStringEx( stringSrc ), m_bkgThread(NULL),
m_defaultColor(RGB(0, 0, 0)),
m_dQuoteColor(RGB(0, 0, 0)), m_sQuoteColor(RGB(0, 0, 0)), m_updateLevel(0),
CThreadLock(), m_bUseThread(bUseThread), m_kPos(0), m_cPos(0), m_qPos(0)
{
//TRACE("ColorString() - %x File: %s, Line: %d\r\n", this, __FILE__, __LINE__);
}
CColorString::CColorString(const CStringEx& stringSrc, BOOL bUseThread) : CStringEx( stringSrc ), m_bkgThread(NULL),
m_defaultColor(RGB(0, 0, 0)),
m_dQuoteColor(RGB(0, 0, 0)), m_sQuoteColor(RGB(0, 0, 0)), m_updateLevel(0),
CThreadLock(), m_bUseThread(bUseThread), m_kPos(0), m_cPos(0), m_qPos(0)
{
//TRACE("ColorString() - %x File: %s, Line: %d\r\n", this, __FILE__, __LINE__);
}
CColorString::CColorString(TCHAR ch, int nRepeat /*= 1*/, BOOL bUseThread) : CStringEx( ch, nRepeat ), m_bkgThread(NULL),
m_defaultColor(RGB(0, 0, 0)),
m_dQuoteColor(RGB(0, 0, 0)), m_sQuoteColor(RGB(0, 0, 0)), m_updateLevel(0),
CThreadLock(), m_bUseThread(bUseThread), m_kPos(0), m_cPos(0), m_qPos(0)
{
//TRACE("ColorString() - %x File: %s, Line: %d\r\n", this, __FILE__, __LINE__);
}
CColorString::CColorString(LPCTSTR lpch, int nLength, BOOL bUseThread) : CStringEx( lpch, nLength ), m_bkgThread(NULL),
m_defaultColor(RGB(0, 0, 0)),
m_dQuoteColor(RGB(0, 0, 0)), m_sQuoteColor(RGB(0, 0, 0)), m_updateLevel(0),
CThreadLock(), m_bUseThread(bUseThread), m_kPos(0), m_cPos(0), m_qPos(0)
{
//TRACE("ColorString() - %x File: %s, Line: %d\r\n", this, __FILE__, __LINE__);
}
CColorString::CColorString(const unsigned char* psz, BOOL bUseThread) : CStringEx( psz ), m_bkgThread(NULL),
m_defaultColor(RGB(0, 0, 0)),
m_dQuoteColor(RGB(0, 0, 0)), m_sQuoteColor(RGB(0, 0, 0)),
CThreadLock(), m_bUseThread(bUseThread), m_kPos(0), m_cPos(0), m_qPos(0)
{
//TRACE("ColorString() - %x File: %s, Line: %d\r\n", this, __FILE__, __LINE__);
}
CColorString::CColorString(LPCWSTR lpsz, BOOL bUseThread) : CStringEx( lpsz ), m_bkgThread(NULL),
m_def