Visual C++. Описание стандартных классов
Страница 22.


 
CSingleLock
Объекты класса CSingleLock используются для контроля доступа к ресурсам в приложении, использующем несколько потоков. Для работы с классами синхронизации CSemaphore, CMutex, CCriticalSection и CEvent необходимо создать объект класса CSingleLock или CMultiLock для ожидания и освобождения объекта класса синхронизации. Объект класса CSingleLock используется в том случае, когда необходимо работать только с одним объектом класса синхронизации. Объект класса CMultiLock используется в том случае, когда необходимо одновременно работать с несколькими объектами классов синхронизации. Для использования объект класса CSingleLock необходимо вызвать его конструктор в функции-члене класса контролируемого ресурса. После этого вызывается функция IsLocked для определения того, доступен ли данный ресурс. Если он доступен, то можно продолжать выполнение функции-члена класса контролируемого ресурса. Если ресурс недоступен, нужно или подождать его освобождения, или аварийно завершить данную функцию. После того, как использование ресурса будет завершено, необходимо или вызвать функцию Unlock, если предполагается дальнейшее использование объекта класса CSingleLock, или уничтожить объект данного класса. Класс CSingleLock не имеет базового класса. Описание данного класса содержится в файле заголовка afxmt.h.
IsLocked
BOOL IsLocked();
Возвращаемое значение
Ненулевое, если объект недоступен, и нулевое в противном случае.
Описание
Определяет является ли объект, связанный с данным объектом класса CSingleLock, неотмеченным (недоступным).
Lock
BOOL Lock(DWORD dwTimeOut = INFINITE);
Возвращаемое значение
Ненулевое, в случае успешного завершения работы функции, и нулевое в противном случае.
Аргументы
"sectiontableheader"dwTimeOut - определяет интервал времени в течение которого данная функция будет ожидать отметки объекта синхронизации (его доступности). Если данный аргумент имеет значение INFINITE, то функция Lock будет ждать до тех пор, пока объект не станет доступным.
Описание
Данная функция позволяет получить доступ к ресурсу, контролируемому объектом синхронизации, указанным в конструкторе данного класса. Если объект синхронизации устанавливается в отмеченное состояние, функция Lock успешно завершает свою работу и поток, в котором она вызывается получает право собственности на объект. Если объект синхронизации находится в неотмеченном состоянии (недоступен), функция Lock ожидает его отметки в течение указанного в аргументе dwTimeOut промежутка времени (измеряемого в миллисекундах). Если в течение этого промежутка времени объект синхронизации не отмечается, то функция Lock возвращает нулевое значение.
CSingleLock
CSingleLock(CSyncObject* pObject, BOOL bInitialLock = FALSE);
Аргументы
"sectiontableheader"pObject - указатель на объект класса синхронизации, к которому необходимо обеспечить доступ. Не может иметь нулевое значение.
"sectiontableheader"bInitialLock - определяет необходимость запросить доступ к объекту класса синхронизации при создании данного объекта.
Описание
Создает объект CSingleLock. Как правило, данный объект создается в функции-члене класса, осуществляющей доступ к разделяемому ресурсу.
Unlock
BOOL Unlock(); BOOL Unlock(LONG lCount, LPLONG lPrevCount = NULL);
Возвращаемое значение
Ненулевое, в случае успешного завершения работы функции, и нулевое в противном случае.
Аргументы
"sectiontableheader"lCount - количество доступов, которые необходимо освободить. Значение данного аргумента должно быть больше нуля. Если указанное количество приведет к переполнению счетчика объектов значение счетчика не изменяется, а функция возвращает значение FALSE.
"sectiontableheader"lPrevCount - указатель на переменную, в которую будет записано предыдущее значение счетчика синхронизации объектов. Если данный аргумент имеет значение NULL, то предыдущее значение счетчика не возвращается.
Описание
Освобождает объекты синхронизации, принадлежащие данному объекту класса CSingleLock. Эта функция вызывается деструктором класса CSingleLock. Если необходимо освободить более одного объекта в семафоре, используйте вторую версию данной функции и укажите число освобождаемых объектов.
CSliderCtrl
Линейный регулятор представляет собой окно, содержащее бегунок и метки шкалы. Метки шкалы могут не отображаться. Когда пользователь перемещает бегунок, используя мышь или клавиши управления курсором, данный элемент управления посылает сообщения о перемещении.
Этот элемент управления может использоваться для выбора дискретных или непрерывных значений из определенного диапазона значений. Например, линейный регулятор может использоваться для установки скорости повторения символов при нажатой клавише.
Класс CSliderCtrl обеспечивает функционирование линейного регулятора в операционной Windows. Этот элемент управления (а следовательно и класс CSliderCtrl) доступен только в программах, работающих под управлением Windows 95 и Windows NT версии 3.51 или более поздних версий данных операционных систем.
Бегунок линейного регулятора может перемещаться только на те приращения, которые определил пользователь при его создании. Например, если для данного линейного регулятора задан диапазон пять, то его бегунок может занимать только шесть позиций: крайнюю левую позицию в окне линейного регулятора и по одной позиции для каждого приращения в данном диапазоне. Обычно, каждая из этих позиций идентифицируется меткой шкалы.
При создании объекта класса линейного регулятора используется его конструктор и функция Create. После создания объекта данного класса необходимо использовать его функции для задания параметров его отображения и масштабных параметров. Эти параметры включают в себя минимальную и максимальную позицию для бегунка, шаг меток шкалы, шаг перемещения при нажатии клавиш управления курсором и начальную позицию бегунка.
Описание данного класса содержится в файле заголовка afxcmn.h.
GetPos
int GetPos() const;
Возвращаемое значение
Текущее положение бегунка.
Описание
Данная функция вызывается для определения текущего положения бегунка в линейном регуляторе.
SetLineSize
int SetLineSize(int nSize);
Возвращаемое значение
Предыдущее значение размера строки.
Аргументы
"sectiontableheader"nSize - новый размер строки в линейном регуляторе.
Описание
Данная функция используется для установления нового размера строки в линейном регуляторе. Этот параметр определяет шаг перемещения бегунка при обработке сообщений TB_LINEUP и TB_LINEDOWN. Эти сообщения посылаются соответствующими клавишами управления курсором.
SetPageSize
int SetPageSize(int nSize);
Возвращаемое значение
Предыдущее значение размера страницы.
Аргументы
"sectiontableheader"nSize - новый размер страницы в линейном регуляторе.
Описание
Данная функция используется для установления нового размера страницы в линейном регуляторе. Этот параметр определяет шаг перемещения бегунка при обработке сообщений TB_PAGEUP и TB_PAGEDOWN. Эти сообщения посылаются клавишами управления курсором и .
SetRange
void SetRange(int nMin, int nMax, BOOL bRedraw = FALSE);
Аргументы
"sectiontableheader"nMin - нижняя граница диапазона изменения.
"sectiontableheader"nMax - верхняя граница диапазона изменения.
"sectiontableheader"bRedraw - флаг перерисовки. Если этот аргумент имеет значение TRUE, то окно линейного регулятора будет перерисовано после установки новых параметров, в противном случае оно не будет перерисовано.
Описание
Данная функция вызывается для задания диапазона (максимальной и минимальной его границ) перемещения бегунка в окне линейного регулятора.
SetTicFreq
void SetTicFreq(int nFreq);
Аргументы
"sectiontableheader"nFreq - шаг меток шкалы.
Описание
Данная функция устанавливает шаг меток шкалы, отображаемых в окне линейного регулятора. Например, если шаг меток шкалы задан равным двум, то метки шкалы отображаются для каждой второй позиции бегунка в окне линейного регулятора. По умолчанию эта величина равна единице (метка устанавливается у каждой позиции бегунка). Чтобы иметь возможность использовать данную функцию необходимо установить в функции CSliderCtrl::Create стиль TBS_AUTOTICKS.
 
« Предыдущая статья   Следующая статья »