|
아래와 같이.. Status바의 canvas영역에 스크롤바를 직접 line으로 그려주는데요..
아무리 해도.. 폰트의 색이 바뀌지 않습니다..
계속 흰색만 나오는군요..
제발 아시는 분은 답변좀 부탁드립니다.
capture한 그림을 첨부합니다.
int iProveEdifParsingMessage(int progress)
{
int static temp = -1;
if(temp!=progress) {
temp = progress;
RECT Rect, ProgressRect, TextRect;
TCanvas& c = *iProveMain->StatusBar1->Canvas;
iProveMain->StatusBar1->Perform(SB_GETRECT, 0, (LPARAM)&Rect);
int Step = ((Rect.right+1)-(Rect.left-1))/99;
c.Brush->Style = bsSolid;
c.Brush->Color = clBtnFace;
ProgressRect.left = Rect.left+2;
ProgressRect.top = Rect.top+2;
ProgressRect.right = Rect.right-2;
ProgressRect.bottom = Rect.bottom-2;
c.FillRect(ProgressRect);
if(progress<=99) {
c.Pen->Color = clBtnHighlight;
c.MoveTo(Rect.left+2, Rect.top+2 );
c.LineTo(Rect.left+2+(Step*progress), Rect.top+2);
c.LineTo(Rect.left+2+(Step*progress), Rect.bottom-2);
c.Pen->Color = clBtnShadow;
c.LineTo(Rect.left+2, Rect.bottom-2);
c.LineTo(Rect.left+2, Rect.top+2);
} else {
c.Pen->Color = clBtnHighlight;
c.MoveTo(Rect.left+2, Rect.top+2);
c.LineTo(Rect.right-2, Rect.top+2);
c.LineTo(Rect.right-2, Rect.bottom-2);
c.Pen->Color = clBtnShadow;
c.LineTo(Rect.left+2, Rect.bottom-2);
c.LineTo(Rect.left+2, Rect.top+2);
}
TextRect = Rect;
TextRect.top = Rect.top+3;
c.Brush->Color = clBtnFace;
AnsiString Caption = PRINTF("%s(%d%)", iProveCurrentEdifFileParsing.c_str(), progress);
DrawText(c.Handle, Caption.c_str(), -1, (RECT*)&TextRect, DT_SINGLELINE | DT_CENTER);
Application->ProcessMessages();
}
return 0;
}
|