에디트 박스에 프로그래스 바처럼 색칠하기..
마법
데브피아의 이석기님의 소스를 좀 바꿔서 위에 2 버튼을 누를때 원래 그림 처럼 나오게 했다가조금 문제가 있어서
약간 고쳤는데 아래 그림처럼 문제가 더 커졌습니다.... 뭐가 잘 못 된걸까요? 소스 좀 봐주세요...
HBRUSH CDiaB1::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
int iProgress;
iProgress=pos;
CRect rect;
CRect progress;
pWnd-GetClientRect(rect);
CBrush b; //칸의 색깔을 칠함...
int i;
int F[]={1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068};
// 에디트 박스의 ID 값들을 배열로 사용합니다.
////////////////////////////////////////////////////////////////////////////////////////
for(i=0;i18;i++)
{
if(pWnd-GetDlgCtrlID() == F[i])
{
b.CreateSolidBrush(RGB(0,0,0)); // 기본 검정.
pDC-FillRect(rect, &b);
b.DeleteObject();
}
if(iProgress !=0)
{
if(iProgress !=4)
{
int tot = rect.Width();
int term = (tot*iProgress)/3; // 에디트 박스를 3등분....
progress.right = progress.left + term;
progress = rect;
if(iProgress == 3)
{
b.CreateSolidBrush(RGB(255,0,0)); // 빨강
}
else if(iProgress == 1)
{
b.CreateSolidBrush(RGB(0,255,0)); // 녹색
}
 sp;else if(iProgress == 2)
{
b.CreateSolidBrush(RGB(255,255,0)); // 노랑.
}
}
pDC-FillRect(progress, &b);
b.DeleteObject();
pDC-SetBkMode(TRANSPARENT); // 투명모드
CBrush a;
a.CreateStockObject(NULL_BRUSH); // 텍스트가 가리지 않게끔...
HBRUSH hb = (HBRUSH)b;
hbr = hb;
}
} // 배열 for 문 끝- 18개의 에디트 박스.
////////////////////////////////////////////////////////////////
return hbr;
}
이석기님의 본래 소스는... http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=50&MAEULNo=20&no=617372&ref=617372
도와 주세요 .. 아랫 그림처럼 엉뚱한 곳에도 색이 칠해 집니다.