Как реализуются цифры %-в рисованных прогрессбарах в VC+
Подробнеее: мне больше нравится когда прогрессбаром выступает монотонно залитый прямоугольник, и на нём ещё можно выводить процент выполненного процесса. Внимание вопрос: как вывести на границе двух прямоугольников надпись, например, "50%", фон которого будет слева цвета левого прямоугольника, а справа - соответственно правого. Подскажите плз, ато как-то некрасиво получается.
Подскажите плз как реализуются цифры %-в рисованных прогрессбарах в VC++.
в стандартных прогрессбарах Windows цифр нет.
а в тех что скажем при InstallShield'овской установке, так это там свой контрол. Юзай лучше стандартные, ну а если очень хотса цифирьки по-середине прогрессбара делай свой прогресбар :)
в стандартных прогрессбарах Windows цифр нет.
а в тех что скажем при InstallShield'овской установке, так это там свой контрол. Юзай лучше стандартные, ну а если очень хотса цифирьки по-середине прогрессбара делай свой прогресбар :)
Так в том-то и дело что свой сделал, а вывести цифры с прозрачным фоном не могу.
Так в том-то и дело что свой сделал, а вывести цифры с прозрачным фоном не могу.
гы :D так бы и сказал:
SetBkMode(hDC, TRANSPARENT);
но ведь тебе ещё надо чтобы у тя на "белом" фоне цыфры были темные, а на тёмном - светлые. Когда скажем 50% то часть цифр будет одного цвета, а часть другого, чтобы этого добиться я делал так:
ставил отсечение и рисовал цифры одним цветом, а затем ставил отсечение на другую сторону и рисовал другим.
char szText[256];
int cbText;
SIZE sizeText;
sprintf(szText, "%d%%", nPercents);
cbText = strlen(szText);
GetTextExtentPoint32(hdc, szText, cbText, &sizeText);
int nOldBkMode = SetBkMode(hdc, TRANSPARENT);
COLORREF clrOldText = SetTextColor(hdc, clrLightColor);
HRGN hrgn = CreateRectRgn(0, 0,
nPercents*nWidth/100, nHeight);
SelectClipRgn(hdc, hrgn);
DeleteObject(hrgn);
TextOut(hdc, (nWidth-sizeText.cx)/2,
(nHeight-sizeText.cy)/2, szText, cbText);
hrgn = CreateRectRgn(nPercents*nWidth/100,0,
nWidth, nHeight);
SelectClipRgn(hdc, hrgn);
DeleteObject(hrgn);
SetTextColor(hdc, clrDarkColor)
TextOut(hdc, (nWidth-sizeText.cx)/2,
(nHeight-sizeText.cy)/2, szText, cbText);
SetBkMode(hdc, nOldBkMode);
SetTextColor(hdc, clrOldText);