cbc中怎么人实现类似于注释关键字等的自动变色功能

cbc中如何人实现类似于注释关键字等的自动变色功能
如题,谢谢:)

------解决方案--------------------
我N年前写的一个入门级的即时语法高量例子. 给你参考

//检查是否包含C++操作符或运算符
bool __fastcall TfrmMain::FCheckOperator(AnsiString KeyStr)
{
char *OperStr=new char[19];
OperStr[0]= '( ';
OperStr[1]= ') ';
OperStr[2]= ' < ';
OperStr[3]= '> ';
OperStr[4]= '& ';
OperStr[5]= '* ';
OperStr[6]= ' ';
OperStr[7]=NULL;
OperStr[8]= '; ';
OperStr[9]= ', ';
OperStr[9]= ': ';
OperStr[10]= '[ ';
OperStr[11]= '] ';
OperStr[12]= '= ';
OperStr[13]= '- ';
OperStr[14]= '+ ';
OperStr[15]= '@ ';
OperStr[16]= '^ ';
OperStr[17]= '& ';
OperStr[18]= '| ';
OperStr[19]= '. ';

for(int i=0;i <20;i++)
{
if(*KeyStr.c_str()==OperStr[i] && OperStr[i] <127)
return false;
}
return true;
}
//----------------------------------------

void __fastcall TfrmMain::FindKeyword(AnsiString KeyStr,int SearchType)
{
int FoundAt, StartPos, ToEnd;

while(FoundAt!=-1)
{
if (RichEdit-> SelLength)
StartPos = RichEdit-> SelStart + RichEdit-> SelLength;
else
StartPos = 0;

ToEnd = RichEdit-> Text.Length() - StartPos;

if(SearchType==1) //根据SearchType决定查找是否区分大小写
FoundAt = RichEdit-> FindText(KeyStr, StartPos, ToEnd, TSearchTypes() < < stMatchCase);
else
FoundAt = RichEdit-> FindText(KeyStr, StartPos, ToEnd, TSearchTypes() < < stWholeWord);


if (FoundAt != -1)
{
bool CheckBack,CheckNext;

//核对此关键字后的字符是否合法
RichEdit-> SelStart=FoundAt+KeyStr.Length();
RichEdit-> SelLength=1;
CheckNext=FCheckOperator(RichEdit-> SelText);

//核对此关键字的字符是否合法
RichEdit-> SelStart=FoundAt-1;
RichEdit-> SelLength=1;
CheckBack=FCheckOperator(RichEdit-> SelText);

RichEdit-> SelStart = FoundAt;
RichEdit-> SelLength = KeyStr.Length();
if(!CheckNext && !CheckBack)
{
RichEdit-> SelAttributes-> Color=clBlue;
RichEdit-> SelAttributes-> Style=TFontStyles() < <fsBold;
}

//如果是特殊操作符号
if(KeyStr== "# ")
{
RichEdit-> SelStart= FoundAt;
RichEdit-> SelLength=RichEdit-> Lines-> Strings[RichEdit-> CaretPos.y].Length();
RichEdit-> SelAttributes-> Color=clBlue;
RichEdit-> SelAttributes-> Style=TFontStyles() < <fsBold;
}
else if(KeyStr== "// ")
{
RichEdit-> SelStart= FoundAt;
RichEdit-> SelLength=RichEdit-> Lines-> Strings[RichEdit-> CaretPos.y].Length()-RichEdit-> CaretPos.x;
RichEdit-> SelAttributes-> Color=clGreen;
}
}
}
}
//----------------------------------------