Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
Вместо прокрутки изображения в окне объект класса CScrollView может автоматически масштабировать область представления таким образом, чтобы ее размеры совпадали с размерами рабочей области окна. В этом режиме в окне отсутствуют полосы прокрутки. Чтобы использовать эту возможность нужно вызвать функцию CScrollView::SetScaleToFitSize (можно использовать функцию SetScaleToFitSize или SetScrollSizes, но не обе функции одновременно).
Перед вызовом функции OnDraw пользовательского класса представления объект класса CScrollView автоматически устанавливает начало координат объекта класса CPaintDC, передаваемого в качестве аргумента данной функции. Чтобы установить начало координат в прокручиваемом окне класс CScrollView перегружает функцию CView::OnPrepareDC. Это позволяет автоматически установить начало координат объекта класса CPaintDC передаваемого классом CScrollView своей функции OnDraw. При использовании пользователем объектов класса CClientDC и других подобных объектов классов контекста устройств ему необходимо самому вызывать функцию CScrollView::OnPrepareDC. Перегрузка функции CScrollView::OnPrepareDC позволяет установить перо, цвет фона и другие атрибуты контекста устройств, но в этой функции обязательно должен быть вызван метод базового класса для реализации процедуры масштабирования.
Различают следующие разновидности полос прокрутки:
r стандартные полосы прокрутки, имеющие стиль окна, и устанавливаемые стилями WS_HSCROLL и WS_VSCROLL;
r полосы прокрутки, добавляемые в главное окно приложения, содержащее данный объект класса представления. В этом случае главное окно приложения само посылает сообщения WM_HSCROLL и WM_VSCROLL активному объекту класса представления;
r главное окно приложения передает сообщения прокрутки от объекта класса элемента управления CSplitterWnd активной панели разделенного окна (представлению). Если объект класса CSplitterWnd использует разделяемые полосы прокрутки, то объект класса CScrollView использует эту полосу прокрутки, а не создает новую.
Описание данного класса содержится в файле заголовка afxwin. h.
Пример использования данного класса приведен в главе 10.
SetScrollSizes
void SetScrollSizes(int nMapMode, SIZE sizeTotal, const SIZE& sizePage = sizeDefault, const SIZE& sizeLine = sizeDefault);
Аргументы
q nMapMode — режим отображения, установленный в данном объекте класса просмотра. Значения, которые может принимать данный аргумент перечислены в таблице П2.6.
Таблица П2.6. Характеристики режимов отображения
Режим отображения | Логические единицы | Направление по оси Y |
MM_TEXT | 1 элемент изображения | Вниз |
MM_HIMETRIC | 0.01 мм | Вверх |
MM_TWIPS | 1/1440 дюйма | Вверх |
MM_HIENGLISH | 0.001 дюйма | Вверх |
MM_LOMETRIC | 0.1 мм | Вверх |
MM_LOENGLISH | 0.01 дюйма | Вверх |
q Все эти режимы определены в Windows. Класс CScrollView не использует два стандартных режима: MM_ISOTROPIC и MM_ANISOTROPIC. В библиотеке MFC предусмотрена функция SetScaleToFitSize, производящая масштабирование области представления к размерам рабочей области окна.
q sizeTotal — общий размер прокручиваемой области представления. Переменная cx данного объекта структуры SIZE содержит ее размер по горизонтали, а переменная cy — ее размер по вертикали. Размеры определяются в логических единицах. Как переменная cx, так и переменная cy должны иметь значение большее либо равное нулю.
q sizePage — шаг перемещения изображения по горизонтали или по вертикали при щелчке левой кнопкой мыши в полосе прокрутки за пределами бегунка. Переменная cx данного объекта структуры SIZE содержит шаг перемещения по горизонтали, а переменная cy — шаг перемещения по вертикали.
q sizeLine — шаг перемещения изображения по горизонтали и по вертикали при щелчке левой кнопкой мыши по стрелкам полосы прокрутки. Переменная cx данного объекта структуры SIZE содержит шаг перемещения по горизонтали, а переменная cy — шаг перемещения по вертикали.
Описание
Функция SetScrollSizes вызывается при обновлении окна представления. Обычно она вызывается в функции OnUpdate для настройки параметров прокрутки, например при первом выводе документа на экран или при изменении его размеров.
Обычно информация, на основании которой вычисляются размеры области представления, получается из связанного с данным представлением документа. Например, если размер документа возвращается функцией GetMyDocSize, вызов данной функции будет выглядеть следующим образом:
SetScrollSizes(nMapMode, GetDocument()->GetMyDocSize());
В противном случае можно использовать фиксированный размер области представления, например:
SetScrollSizes(nMapMode, CSize(100, 100));
В данной функции может использоваться любой режим отображения Windows, кроме MM_ISOTROPIC и MM_ANISOTROPIC. При использовании данных стилей вместо функции SetScrollSizes используется функция SetScaleToFitSize.
CSingleLock
Объекты класса CSingleLock используются для контроля доступа к ресурсам в приложении, использующем несколько потоков. Для работы с классами синхронизации CSemaphore, CMutex, CCriticalSection и CEvent необходимо создать объект класса CSingleLock или CMultiLock для ожидания и освобождения объекта класса синхронизации. Объект класса CSingleLock используется в том случае, когда необходимо работать только с одним объектом класса синхронизации. Объект класса CMultiLock используется в том случае, когда необходимо одновременно работать с несколькими объектами классов синхронизации.
Для использования объект класса CSingleLock необходимо вызвать его конструктор в функции-члене класса контролируемого ресурса. После этого вызывается функция IsLocked для определения того, доступен ли данный ресурс. Если он доступен, то можно продолжать выполнение функции-члена класса контролируемого ресурса. Если ресурс недоступен, нужно или подождать его освобождения, или аварийно завершить данную функцию. После того, как использование ресурса будет завершено, необходимо или вызвать функцию Unlock, если предполагается дальнейшее использование объекта класса CSingleLock, или уничтожить объект данного класса.
Класс CSingleLock не имеет базового класса.
Описание данного класса содержится в файле заголовка afxmt. h.
Пример использования данного класса приведен в главе 12.
IsLocked
BOOL IsLocked();
Возвращаемое значение
Ненулевое, если объект недоступен, и нулевое в противном случае.
Описание
Определяет является ли объект, связанный с данным объектом класса CSingleLock, неотмеченным (недоступным).
Lock
BOOL Lock(DWORD dwTimeOut = INFINITE);
Возвращаемое значение
Ненулевое, в случае успешного завершения работы функции, и нулевое в противном случае.
Аргументы
q dwTimeOut — определяет интервал времени в течение которого данная функция будет ожидать отметки объекта синхронизации (его доступности). Если данный аргумент имеет значение INFINITE, то функция Lock будет ждать до тех пор, пока объект не станет доступным.
Описание
Данная функция позволяет получить доступ к ресурсу, контролируемому объектом синхронизации, указанным в конструкторе данного класса. Если объект синхронизации устанавливается в отмеченное состояние, функция Lock успешно завершает свою работу и поток, в котором она вызывается получает право собственности на объект. Если объект синхронизации находится в неотмеченном состоянии (недоступен), функция Lock ожидает его отметки в течение указанного в аргументе dwTimeOut промежутка времени (измеряемого в миллисекундах). Если в течение этого промежутка времени объект синхронизации не отмечается, то функция Lock возвращает нулевое значение.
CSingleLock
CSingleLock(CSyncObject* pObject, BOOL bInitialLock = FALSE);
Аргументы
q pObject — указатель на объект класса синхронизации, к которому необходимо обеспечить доступ. Не может иметь нулевое значение.
q bInitialLock — определяет необходимость запросить доступ к объекту класса синхронизации при создании данного объекта.
Описание
Создает объект CSingleLock. Как правило, данный объект создается в функции-члене класса, осуществляющей доступ к разделяемому ресурсу.
Unlock
BOOL Unlock();
BOOL Unlock(LONG lCount, LPLONG lPrevCount = NULL);
Возвращаемое значение
Ненулевое, в случае успешного завершения работы функции, и нулевое в противном случае.
Аргументы
q lCount — количество доступов, которые необходимо освободить. Значение данного аргумента должно быть больше нуля. Если указанное количество приведет к переполнению счетчика объектов значение счетчика не изменяется, а функция возвращает значение FALSE.
q lPrevCount — указатель на переменную, в которую будет записано предыдущее значение счетчика синхронизации объектов. Если данный аргумент имеет значение NULL, то предыдущее значение счетчика не возвращается.
Описание
Освобождает объекты синхронизации, принадлежащие данному объекту класса CSingleLock. Эта функция вызывается деструктором класса CSingleLock. Если необходимо освободить более одного объекта в семафоре, используйте вторую версию данной функции и укажите число освобождаемых объектов.
CSliderCtrl
Линейный регулятор представляет собой окно, содержащее бегунок и метки шкалы. Метки шкалы могут не отображаться. Когда пользователь перемещает бегунок, используя мышь или клавиши управления курсором, данный элемент управления посылает сообщения о перемещении.
Этот элемент управления может использоваться для выбора дискретных или непрерывных значений из определенного диапазона значений. Например, линейный регулятор может использоваться для установки скорости повторения символов при нажатой клавише.
Класс CSliderCtrl обеспечивает функционирование линейного регулятора в операционной Windows. Этот элемент управления (а следовательно и класс CSliderCtrl) доступен только в программах, работающих под управлением Windows 95 и Windows NT версии 3.51 или более поздних версий данных операционных систем.
Бегунок линейного регулятора может перемещаться только на те приращения, которые определил пользователь при его создании. Например, если для данного линейного регулятора задан диапазон пять, то его бегунок может занимать только шесть позиций: крайнюю левую позицию в окне линейного регулятора и по одной позиции для каждого приращения в данном диапазоне. Обычно, каждая из этих позиций идентифицируется меткой шкалы.
При создании объекта класса линейного регулятора используется его конструктор и функция Create. После создания объекта данного класса необходимо использовать его функции для задания параметров его отображения и масштабных параметров. Эти параметры включают в себя минимальную и максимальную позицию для бегунка, шаг меток шкалы, шаг перемещения при нажатии клавиш управления курсором и начальную позицию бегунка.
Описание данного класса содержится в файле заголовка afxcmn. h.
Пример использования данного класса приведен в главе 4.
GetPos
int GetPos() const;
Возвращаемое значение
Текущее положение бегунка.
Описание
Данная функция вызывается для определения текущего положения бегунка в линейном регуляторе.
SetLineSize
int SetLineSize(int nSize);
Возвращаемое значение
Предыдущее значение размера строки.
Аргументы
q nSize — новый размер строки в линейном регуляторе.
Описание
Данная функция используется для установления нового размера строки в линейном регуляторе. Этот параметр определяет шаг перемещения бегунка при обработке сообщений TB_LINEUP и TB_LINEDOWN. Эти сообщения посылаются соответствующими клавишами управления курсором.
SetPageSize
int SetPageSize(int nSize);
Возвращаемое значение
Предыдущее значение размера страницы.
Аргументы
q nSize — новый размер страницы в линейном регуляторе.
Описание
Данная функция используется для установления нового размера страницы в линейном регуляторе. Этот параметр определяет шаг перемещения бегунка при обработке сообщений TB_PAGEUP и TB_PAGEDOWN. Эти сообщения посылаются клавишами управления курсором <PgUp> и <PgDn>.
SetRange
void SetRange(int nMin, int nMax, BOOL bRedraw = FALSE);
Аргументы
q nMin — нижняя граница диапазона изменения.
q nMax — верхняя граница диапазона изменения.
q bRedraw — флаг перерисовки. Если этот аргумент имеет значение TRUE, то окно линейного регулятора будет перерисовано после установки новых параметров, в противном случае оно не будет перерисовано.
Описание
Данная функция вызывается для задания диапазона (максимальной и минимальной его границ) перемещения бегунка в окне линейного регулятора.
SetTicFreq
void SetTicFreq(int nFreq);
Аргументы
q nFreq — шаг меток шкалы.
Описание
Данная функция устанавливает шаг меток шкалы, отображаемых в окне линейного регулятора. Например, если шаг меток шкалы задан равным двум, то метки шкалы отображаются для каждой второй позиции бегунка в окне линейного регулятора. По умолчанию эта величина равна единице (метка устанавливается у каждой позиции бегунка).
Чтобы иметь возможность использовать данную функцию необходимо установить в функции CSliderCtrl::Create стиль TBS_AUTOTICKS.
CStatusBar
Объект класса CStatusBar представляет собой панель управления, состоящую из ряда панелей, содержащих текстовую информацию, или "индикаторов". Эти панели обычно используются для вывода сообщений и индикации различных состояний. Они используются, например, для вывода справочной информации о командах меню и индикации состояния клавиш <Scroll Lock>, <Num Lock> и <Caps Lock>.
В библиотеке MFC версии 4.0 появилась функция CStatusBar::GetStatusBarCtrl, позволяющая пользователю получить непосредственный доступ к элементу управления Windows. Непосредственное использование элемента управления Windows позволяет вносить в него изменения и использовать дополнительные возможности данного элемента управления. Функции-члены класса CStatusBar обеспечивают достаточно широкие возможности для работы с панелью инструментов, но функция GetStatusBarCtrl позволяет использовать дополнительные возможности строки состояния в Windows 95. Функция GetStatusBarCtrl возвращает ссылку на объект класса CStatusBarCtrl.
Приложение хранит информацию об индикаторе строки состояния в массиве, в котором крайнему левому индикатору соответствует нулевой индекс. При создании объекта класса строки состояния используется массив идентификаторов индикаторов, который приложение связывает с соответствующим массивом индикаторов. После этого для доступа к индикатору может использоваться как его идентификатор, так и его индекс в массиве.
По умолчанию первый индикатор является "эластичным": он занимает все место, не занятое в строке состояния другими индикаторами. Таким образом другие панели индикаторов выравниваются по правому краю.
Чтобы создать в приложении строку состояния:
1. Создайте объект класса CStatusBar.
2. Вызовите функцию Create (или CreateEx), создающую в окне строку состояния Windows и связывающую ее с объектом класса CStatusBar.
3. Вызовите функцию SetIndicators, сопоставляющую каждой панели индикатора свой идентификатор.
Существует три способа обновления текста в панели строки состояния:
r вызвать функцию CWnd::SetWindowText для обновления текста нулевой панели;
r вызвать функцию CCmdUI::SetText в функции обработки сообщения ON_UPDATE_COMMAND_UI в классе строки состояния;
r вызвать функцию SetPaneText для обновления текста в каждой панели.
Для изменения стиля панели строки состояния вызывается функция SetPaneStyle.
Описание данного класса содержится в файле заголовка afxext. h.
Пример использования данного класса приведен в главе 9.
CommandToIndex
int CommandToIndex(UINT nIDFind) const;
Возвращаемое значение
Индекс панели индикатора, в случае успешного завершения функции, и –1 в противном случае.
Аргументы
q nIDFind — идентификатор панели, индекс которой требуется получить.
Описание
Позволяет получить индекс индикатора по заданному идентификатору. Первый индикатор имеет нулевой индекс.
Create
BOOL Create(CWnd* pParentWnd, DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_BOTTOM, UINT nID = AFX_IDW_STATUS_BAR);
Возвращаемое значение
Ненулевое, в случае успешного завершения функции, и нулевое в противном случае.
Аргументы
q pParentWnd — указатель на объект класса CWnd окно которого является родительским окном окна строки состояния.
q dwStyle — стиль строки состояния. В дополнение к стандартным стилям Windows в данном аргументе могут присутствовать следующие стили:
· CBRS_TOP — панель управления расположена над рабочей областью главного окна приложения;
· CBRS_BOTTOM — панель управления расположена под рабочей областью главного окна приложения;
· CBRS_NOALIGN — панель управления не изменяет своего положения при изменении размеров и положения родительского окна.
q nID — идентификатор дочернего окна строки состояния.
Описание
Создает строку состояния (дочернее окно) и связывает его с объектом класса CStatusBar. Кроме того, данная функция задает исходный шрифт и устанавливает высоту строки состояния, заданную по умолчанию.
SetIndicators
BOOL SetIndicators(const UINT* lpIDArray, int nIDCount);
Возвращаемое значение
Ненулевое, в случае успешного завершения функции, и нулевое в противном случае.
Аргументы
q lpIDArray — указатель на массив идентификаторов.
q nIDCount — размерность массива, на который указывает аргумент lpIDArray.
Описание
Сопоставляет каждому идентификатору индикатора значение, указанное для него в массиве lpIDArray, загружает строковый ресурс, определенный для каждого идентификатора, и выводит его в соответствующей панели.
SetPaneInfo
void SetPaneInfo(int nIndex, UINT nID, UINT nStyle, int cxWidth);
Аргументы
q nIndex — индекс панели индикатора, для которой устанавливается данный стиль.
q nID — новый идентификатор для панели индикатора.
q nStyle — новый стиль панели индикатора. Может принимать следующие значения:
· SBPS_NOBORDERS — панель не имеет объемной рамки;
· SBPS_POPOUT — инвертированная рамка, такая что панель выглядит выступающей;
· SBPS_DISABLED — запрещает вывод текста в панель;
· SBPS_STRETCH — данная панель растягивается таким образом, чтобы заполнить все свободное место. Этот стиль может иметь только одна панель в строке состояния;
· SBPS_NORMAL — панель не растягивается, не имеет рамки и не выступает.
q cxWidth — новая ширина панели индикатора.
Описание
Устанавливает для панели индикатора новые идентификатор, стиль и ширину.
SetPaneText
BOOL SetPaneText(int nIndex, LPCTSTR lpszNewText, BOOL bUpdate = TRUE);
Возвращаемое значение
Ненулевое, в случае успешного завершения функции, и нулевое в противном случае.
Аргументы
q nIndex — индекс панели, в которую необходимо вывести текст.
q lpszNewText — указатель на текстовую строку, содержащую выводимый текст.
q bUpdate — если этот аргумент имеет значение TRUE, то содержимое панели обновляется для отображения в ней нового текста.
Описание
Выводит в панель индикаторов текст, на который указывает аргумент lpszNewText.
CString
Объект класса CString используется для хранения текстовой строки переменного размера. Функции и операции данного класса во многом аналогичны операторам языка Basic. Использование операций конкатенации и сравнения строк, а также упрощение операций по работе с памятью, существенно облегчают работу с объектом класса CString по сравнению с обычным массивом символов.
Для представления символов в объекте класса CString используется тип TCHAR. Если для программы определен символ _UNICODE, то типу TCHAR соответствует тип wchar_t (16-разрядный символ), в противном случае этому типу соответствует тип char (обычный 8-разрядный символ). При использовании кодировки Unicode объекты класса CString состоят из 16-разрядных символов. При использовании кодировки Windows они состоят из 8-разрядных символов.
Если не определен символ _UNICODE, объект класса CString позволяет использовать многобайтные наборы символов (MBCS известные так же, как DBCS). При этом следует помнить, что объект класса CString при проведении строковых операций рассматривает строки MBCS как набор 8-разрядных символов. Поэтому приложение должно само взять на себя задачу подготовки аргументов для данных операций и правильной интерпретации полученных результатов.
Объекты класса CString имеют следующие особенности:
r объект класса CString позволяет увеличивать размер хранимой в нем строки для размещения результата операции слияния строк;
r объект класса CString следует рассматривать как строку, а не как указатель на нее;
r объект класса CString самостоятельно преобразуется к типу const char* и LPCTSTR, что позволяет использовать его в качестве аргументов функций, имеющих данный тип;
r оператор явного преобразования типов позволяет получить доступ к содержимому объекта данного класса как к строке символов, имеющей атрибут только для чтения.
По возможности следует избегать создания динамических объектов класса CString. Это поможет сэкономить память, и упростит доступ к данному объекту.
Класс CString позволяет незначительно уменьшить объем используемой оперативной памяти за счет того, что две строки, имеющие одно и то же содержимое, разделяют одну и ту же область памяти. Однако эта копеечная экономия приводит к тому, что в случае непосредственного изменения содержимого буфера, содержащего данную строку (в обход функций библиотеки MFC) изменения будут внесены сразу в обе строки.
Класс CString включает в себя две функции, позволяющие защитить данные от подобных изменений: CString::LockBuffer и CString::UnlockBuffer. При вызове функции LockBuffer создается копия данной строки, а ее счетчик обращений устанавливается в –1, что означает передачу данной копии в безраздельное пользование данному объекту класса CString. В этом режиме никакой другой объект класса CString не может получить доступ к данной строке, а данный объект класса не может получить доступ к другой строке. Этот режим гарантирует, что все изменения, внесенные в данный объект, не приведут к порче информации, хранимой в других объектах. После завершения модификации новой строки вызывается функция UnlockBuffer, устанавливающая счетчик обращений в 1.
Класс CString не имеет базового класса.
Описание данного класса содержится в файле заголовка afx. h.
Empty
void Empty();
Описание
Очищает объект класса CString и освобождает память в случае необходимости.
Format
void Format(LPCTSTR lpszFormat, ...);
void Format(UINT nFormatID, ...);
Аргументы
q lpszFormat — строка форматирования.
q nFormatID — идентификатор строкового ресурса, содержащий строку форматирования.
Описание
Данная функция позволяет записать в объект класса CString форматированную строку аналогично тому, как это делает функция sprintf для символьных массивов. В результате выполнения данной функции в объекте класса CString сохраняется форматированная последовательность символов и значений величин. Каждый дополнительный аргумент, если он присутствует, преобразуется и выводится в соответствии со спецификациями формата, содержащимися в аргументе lpszFormat или в строковом ресурсе, определяемом идентификатором nFormatID.
Функция аварийно завершит свою работу, если в качестве аргумента функции Format будет указана сама строка. Например, выполнение следующего программного кода приведет к непредсказуемым результатам:
CString str = "Some Data";
str. Format("%s%d", str, 345);
Если в качестве дополнительного аргумента передается строка символов, ее необходимо явным образом преобразовать к типу LPCTSTR. Строка форматирования имеет ту же форму и функцию, что и формат аргументов функции printf. В конец записанной строки символов добавляется нулевой символ.
LoadString
BOOL LoadString(UINT nID);
throw(CMemoryException);
Возвращаемое значение
Ненулевое, в случае успешного завершения функции, и нулевое в противном случае.
Аргументы
q nID — идентификатор строкового ресурса Windows.
Описание
Считывает строковый ресурс Windows, определяемый аргументом nID, в существующий объект класса CString.
CToolBar
Объекты класса CToolBar представляют собой панели управления, представляющие собой ряд кнопок, на которых помещены битовые образы, между которыми могут находиться разделители. Кнопки панели инструментов могут действовать как обычные кнопки, переключатели или флажки. Обычно объекты класса CToolBar внедряются в объекты оконных классов, производных от класса CFrameWnd или от класса CMDIFrameWnd.
В библиотеке MFC версии 4.0 появилась функция CToolBar::GetToolBarCtrl, позволяющая пользователю получить непосредственный доступ к элементу управления Windows. Непосредственное использование элемента управления Windows позволяет вносить в него изменения и использовать дополнительные возможности данного элемента управления. Функции-члены класса CToolBar обеспечивают достаточно широкие возможности для работы с панелью инструментов, но функция GetToolBarCtrl позволяет использовать дополнительные возможности панелей инструментов в Windows 95. Функция GetToolBarCtrl возвращает ссылку на объект класса CToolBarCtrl.
Чтобы создать панель инструментов с помощью редактора ресурсов:
1. Создайте ресурс панели инструментов.
2. Создайте объект класса CToolBar.
3. Вызовите функцию Create (CreateEx) для создания панели инструментов Windows и связывания ее с объектом класса CToolBar.
4. Вызовите функцию LoadToolBar для загрузки ресурса панели инструментов.
Чтобы создать панель инструментов другим способом:
1. Создайте объект класса CToolBar.
2. Вызовите функцию Create (CreateEx) для создания панели инструментов Windows и связывания ее с объектом класса CToolBar.
3. Вызовите функцию LoadBitmap для загрузки битового образа, содержащего значки для кнопок панели инструментов.
4. Вызовите функцию SetButtons для установки стиля кнопок и сопоставьте каждой кнопке соответствующий ее битовый образ.
Все значки для кнопок панели инструментов хранятся в одном битовом образе. Все значки должны иметь одинаковые размеры. По умолчанию каждый значок имеет 16 элементов изображения в ширину и 15 элементов изображения в высоту. Значки должны располагаться в битовом образе без промежутков между ними.
Функция SetButtons получает указатель на массив идентификаторов элементов управления и целочисленную величину, определяющую количество элементов в массиве. Функция сопоставляет каждому идентификатору кнопки сегмент битового образа и назначает каждой кнопке индекс значка, определяющий положение значка кнопки в битовом образе. Если элемент массива имеет значение ID_SEPARATOR, ему не назначается никакого индекса значка.
Порядок значков в битовом образе обычно совпадает с порядком их отображения на экране, но с использованием функции SetButtonInfo порядок вывода значков может быть изменен.
Все кнопки в панели инструментов имеют одинаковый размер. По умолчанию их размер составляет 24х22 элементов изображения. Этот размер определен в документе Windows Interface Guidelines for Software Design. Дополнительное пространство, образовавшееся вследствие разницы размеров кнопки и значка, используется для формирования рамки вокруг значка.
Каждая кнопка имеет один значок. Все изображения на кнопке, отображающие ее состояние (нажата, отжата, недоступна, недоступна и нажата и промежуточное состояние) формируются из одного значка, связанного с кнопкой. Хотя битовый образ может иметь любой цвет, наилучшие результаты достигаются при использовании черного цвета и оттенков серого.
По умолчанию кнопки панели инструментов имитируют простые кнопки. Однако они могут имитировать также и переключатели и флажки. Флажки имеют три состояния: установлен, сброшен и неопределенное. Переключатели имеют только два состояния: установлен и сброшен.
Для установки стиля отдельной кнопки или разделителя без обращения к массиву сначала необходимо вызвать функцию GetButtonStyle, чтобы получить ее текущее состояние, а затем вызвать функцию SetButtonStyle вместо вызова функции SetButtons. Функцию SetButtonStyle целесообразно использовать при изменении стиля кнопки в процессе работы с приложением.
Если необходимо, чтобы в кнопке появился текст, вызовите функцию GetButtonText, чтобы получить текст, который должен быть выведен в кнопке, а затем вызовите функцию SetButtonText для установки текста.
Чтобы создать флажок в панели инструментов, необходимо использовать стиль TBBS_CHECKBOX или вызвать функцию CCmdUI::SetCheck при обработке сообщения ON_UPDATE_COMMAND_UI. Вызов функции SetCheck превращает обычную кнопку во флажок. Если аргумент функции SetCheck имеет значение 0, то флажок сбрасывается, если он имеет значение 1, то флажок устанавливается, а значение 2 соответствует неопределенному состоянию.
Чтобы создать переключатель, необходимо вызвать функцию CCmdUI::SetRadio при обработке сообщения ON_UPDATE_COMMAND_UI. При передаче функции SetRadio нулевого аргумента переключатель сбрасывается, в противном случае он устанавливается. Чтобы создать группу переключателей, необходимо создать функции обработки сообщения ON_UPDATE_COMMAND_UI для всех кнопок группы.
Описание данного класса содержится в файле заголовка afxext. h.
Пример использования данного класса приведен в главе 9.
CreateEx
BOOL CreateEx(CWnd* pParentWnd, DWORD dwCtrlStyle = TBSTYLE_FLAT, DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP, CRect rcBorders = CRect(0, 0, 0, 0), UINT nID = AFX_IDW_TOOLBAR);
Возвращаемое значение
Ненулевое, в случае успешного завершения функции, и нулевое в противном случае.
Аргументы
q pParentWnd — указатель на родительское окно панели инструментов.
q dwCtrlStyle — дополнительные стили для создания внедренного объекта класса CToolBarCtrl. По умолчанию этот аргумент имеет значение TBSTYLE_FLAT.
q dwStyle — стили панели инструментов.
q rcBorders — объект класса CRect, определяющий ширину рамки окна панели инструментов. По умолчанию этот аргумент имеет значение 0,0,0,0, поэтому окно панели инструментов не имеет рамки.
q nID — идентификатор дочернего окна панели инструментов.
Описание
Данная функция создает панель инструментов Windows (дочернее окно) и связывает ее с объектом класса CToolBar. Кроме того, она устанавливает заданное по умолчанию значение высоты панели инструментов.
Использование функции CreateEx вместо функции Create позволяет устанавливать стили при создании внедренного объекта класса CToolBarCtrl. Например, если аргумент dwCtrlStyle имеет значение TBSTYLE_FLAT|TBSTYLE_TRANSPARENT, то создается панель инструментов в стиле Internet Explorer 4.0.
LoadToolBar
BOOL LoadToolBar(LPCTSTR lpszResourceName);
BOOL LoadToolBar(UINT nIDResource);
Возвращаемое значение
Ненулевое, в случае успешного завершения функции, и нулевое в противном случае.
Аргументы
q lpszResourceName — указатель на имя ресурса загружаемой панели инструментов.
q nIDResource — идентификатор ресурса загружаемой панели инструментов.
Описание
Данная функция загружает панель инструментов (дочернее окно Windows) определяемую аргументом lpszResourceName или аргументом nIDResource.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |


