|
发表于 2010-1-31 13:34:53
|
显示全部楼层
我也试一下
/*0001*/ void cpSetCodeColor(const string& formatName, const string& colorName, BOOL bNeedTrack)
/*0002*/ {
/*0003*/ cpColorFormat_t::iterator it = cpColorFormat.find(formatName);
/*0004*/ if(it == cpColorFormat.end()){
/*0005*/ return;
/*0006*/ }
/*0007*/ cpColorMap_t::iterator it1 = cpColorMap.find(colorName);
/*0008*/ if(it1 == cpColorMap.end()){
/*0009*/ return;
/*0010*/ }
/*0011*/ COLORREF ref = RGB(
/*0012*/ GetBValue(it1->second),
/*0013*/ GetGValue(it1->second),
/*0014*/ GetRValue(it1->second)
/*0015*/ );
/*0016*/ char buf[1024] = "";
/*0017*/ sprintf(buf,it->second.set.c_str(),ref);
/*0018*/ OutputString(buf,0);
/*0019*/ if(bNeedTrack){
/*0020*/ cpCodeColor cpColor;
/*0021*/ cpColor.color = it1->second;
/*0022*/ cpColor.start = curPos;
/*0023*/ cpPosStack.push_back(cpColor);
/*0024*/ }
/*0025*/ }
/*0026*/
/*0027*/
/*0028*/ void StringLog(const char* str);
/*0029*/ /**
<font color=#646400>|*0030*| reset code color
|*0031*| */</font>
/*0032*/ void cpResetCodeColor(const string& formatName, BOOL bNeedTrack)
/*0033*/ {
/*0034*/ cpColorFormat_t::iterator it = cpColorFormat.find(formatName);
/*0035*/ if(it == cpColorFormat.end()){
/*0036*/ return;
/*0037*/ }
/*0038*/ char buf[1024] = "";
/*0039*/ sprintf(buf,it->second.reset.c_str());
/*0040*/ OutputString(buf,0);
/*0041*/ if(bNeedTrack && cpPosStack.size()){
/*0042*/ vector<cpCodeColor>::iterator it1 = cpPosStack.begin();
/*0043*/ it1 += (cpPosStack.size() - 1);
/*0044*/ if(it1 != cpPosStack.end()){
/*0045*/ it1->end = curPos;
/*0046*/ if(0){
/*0047*/ char buf[1024] = "";
/*0048*/ sprintf(buf,"Color: 0x%06X, Start: %d, End: %d",
/*0049*/ it1->color,it1->start, it1->end);
/*0050*/ StringLog(buf);
/*0051*/ }
/*0052*/ cpColorStack.push_back(*it1);
/*0053*/ cpPosStack.erase(it1);
/*0054*/ }
/*0055*/ }
/*0056*/ } |
|