2010-09-04 4 views
1

Я использую API окон (на C++) для создания приложения Windows.Невозможно реализовать счетчик в окнах API

Теперь у меня есть индикатор выполнения, который я хочу показать как метр. Метр синий и не имеет анимации. Я не могу понять, как это реализовать, и если я это сделаю, я просто соглашусь на обычный зеленый индикатор прогресса.

Пожалуйста, помогите.

EDIT: по крайней мере, можно отключить анимацию (выделить слайды через заполненную секцию панели)?

EDIT2:

Вот решение C++, если кто-либо другой с этой проблемой:

PAINTSTRUCT ps; 
HDC hDC = BeginPaint(hwnd,&ps); 
RECT r; 
HTHEME theme = OpenThemeData(hwnd,L"PROGRESS"); 
SetRect(&r,10,10,100,25); 
DrawThemeBackground(theme,hDC,11,2,&r,NULL); 
SetRect(&r,10,10,50,25); 
DrawThemeBackground(theme,hDC,5,4,&r,NULL); 
CloseThemeData(theme); 
EndPaint(hwnd,&ps); 
+2

Вы пропустите ручку, используйте CloseThemeData(). –

ответ

1

Вы можете нарисовать этот стиль индикатора выполнения с помощью DrawThemeBackground(). Вы найдете названия темы, номера деталей и состояний в моем ответе в this thread.

+0

Что я могу передать hTheme? –

+0

Возвращаемое значение OpenThemeData(). Имя класса - «ПРОГРЕСС». –

+0

потрясающий! он работает отлично. –

0

Встроенный контроль не может сделать это ... однако, это не так, как ProgressBar сложный контроль , Если вам нужен только синий прямоугольник, используйте DrawRect и нарисуйте синий прямоугольник.

+0

говорит о метрах в руководстве пользователя expdience пользователя msdn, но ничего не говорит о его реализации. –

+0

@ Александр: Я не понимаю. Если все, что вам нужно, это прямоугольник, почему вам нужно сделать его более сложным. Я что-то упустил? –

+0

он должен выглядеть как нормальный индикатор окон, но синий (и не анимированный). Я отлично использую зеленый, но было бы неплохо, если бы кто-то знал, как получить его как метр (например, доступное дисковое пространство на моем компьютере) –