Азбука программирования в Win32 API


Азбука программирования в Win32 API - стр. 131


РАБОТА С ИНДИКАТОРОМ (PROGRESS BAR'OM)

Надеюсь, что читатель уже имеет опыт инсталляции программных продуктов для Windows. Там степень завершенности задачи отражается синей полосой, которая постоянно растет. По достижении ею отметки, соответствующей 100%, процесс инсталляции оказывается завершенным. Вот эта синяя полоса и является индикатором, который индицирует степень завершенности достаточно длительной задачи.

По своему внешнему виду это, наверное, самый простой из общих элементов управления. То же самое можно сказать и о работе с ним. У него только один стиль, и всего пять сообщений применяются для управ­ления им.

Как и в случае трекбара, специальной функции для создания индика­тора нет. Для создания индикатора необходимо использовать функцию CreateWindowQ или CreateWindowExQ. Для указания имени класса необходимо использовать макрос PROGRESS_CLASS, который в файле commctrl.h описан следующим образом:

#ifdef_WIN32

tfdefme PROGRESS_CLASSA

#define PROGRESS_CLASSW

#ifdef UNICODE

#defme PROGRESS_CLASS

#else

tfdefme PROGRESSJXASS

#endif

#else

#define PROGRESS_CLASS

#endif

"msctls_progress32" L"msctls_progress32"

PROGRESS_CLASSW PROGRESS_CLASSA

"msctls_progress"

156

Для управления индикатором используются сообщения. Поговорим о них.

Наверное, для того чтобы использовать индикатор, необходимо опре­делить для него минимальное и максимальное значения (в приведенном примере, когда я говорил об инсталляционных программах, минимальное и максимальное значения равны 0 и 100 соответственно). С этой целью используется сообщение PBM_SETRANGE (WM_USER+1). wParam его должен быть равно 0, a IParam должно определяться как MAKELONG(wMinRange, wMaxRange), где wMinRange и wMaxRange -минимальное и максимальное значения. Функция, пославшая это сооб­щение, возвращает значения старого диапазона. Если обозначить возвра­щаемое значение как IReturn, то LOWORD(lReturn) будет определять нижнюю границу диапазона, a HIWORD(lReturn) будет содержать верх­нюю границу диапазона.




Начало  Назад  Вперед



Книжный магазин