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


 
CStatusBar
Объект класса CStatusBar представляет собой панель управления, состоящую из ряда панелей, содержащих текстовую информацию, или "индикаторов". Эти панели обычно используются для вывода сообщений и индикации различных состояний. Они используются, например, для вывода справочной информации о командах меню и индикации состояния клавиш , и .
В библиотеке MFC версии 4.0 появилась функция CStatusBar::GetStatusBarCtrl, позволяющая пользователю получить непосредственный доступ к элементу управления Windows. Непосредственное использование элемента управления Windows позволяет вносить в него изменения и использовать дополнительные возможности данного элемента управления. Функции-члены класса CStatusBar обеспечивают достаточно широкие возможности для работы с панелью инструментов, но функция GetStatusBarCtrl позволяет использовать дополнительные возможности строки состояния в Windows 95. Функция GetStatusBarCtrl возвращает ссылку на объект класса CStatusBarCtrl.
Приложение хранит информацию об индикаторе строки состояния в массиве, в котором крайнему левому индикатору соответствует нулевой индекс. При создании объекта класса строки состояния используется массив идентификаторов индикаторов, который приложение связывает с соответствующим массивом индикаторов. После этого для доступа к индикатору может использоваться как его идентификатор, так и его индекс в массиве.
По умолчанию первый индикатор является "эластичным": он занимает все место, не занятое в строке состояния другими индикаторами. Таким образом другие панели индикаторов выравниваются по правому краю.
Чтобы создать в приложении строку состояния:
1.Создайте объект класса CStatusBar.
2.Вызовите функцию Create (или CreateEx), создающую в окне строку состояния Windows и связывающую ее с объектом класса CStatusBar.
3.Вызовите функцию SetIndicators, сопоставляющую каждой панели индикатора свой идентификатор.
Существует три способа обновления текста в панели строки состояния:
"sectiontableheader"вызвать функцию CWnd::SetWindowText для обновления текста нулевой панели;
"sectiontableheader"вызвать функцию CCmdUI::SetText в функции обработки сообщения ON_UPDATE_COMMAND_UI в классе строки состояния;
"sectiontableheader"вызвать функцию SetPaneText для обновления текста в каждой панели.
Для изменения стиля панели строки состояния вызывается функция SetPaneStyle. Описание данного класса содержится в файле заголовка afxext.h.
CommandToIndex
int CommandToIndex(UINT nIDFind) const;
Возвращаемое значение
Индекс панели индикатора, в случае успешного завершения функции, и -1 в противном случае.
Аргументы
"sectiontableheader"nIDFind - идентификатор панели, индекс которой требуется получить.
Описание
Позволяет получить индекс индикатора по заданному идентификатору. Первый индикатор имеет нулевой индекс.
Create
BOOL Create(CWnd* pParentWnd, DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_BOTTOM, UINT nID = AFX_IDW_STATUS_BAR);
Возвращаемое значение
Ненулевое, в случае успешного завершения функции, и нулевое в противном случае.
Аргументы
"sectiontableheader"pParentWnd - указатель на объект класса CWnd окно которого является родительским окном окна строки состояния.
"sectiontableheader"dwStyle - стиль строки состояния. В дополнение к стандартным стилям Windows в данном аргументе могут присутствовать следующие стили:
"sectiontableheader"CBRS_TOP - панель управления расположена над рабочей областью главного окна приложения;
"sectiontableheader"CBRS_BOTTOM - панель управления расположена под рабочей областью главного окна приложения;
"sectiontableheader"CBRS_NOALIGN - панель управления не изменяет своего положения при изменении размеров и положения родительского окна.
"sectiontableheader"nID - идентификатор дочернего окна строки состояния.
Описание
Создает строку состояния (дочернее окно) и связывает его с объектом класса CStatusBar. Кроме того, данная функция задает исходный шрифт и устанавливает высоту строки состояния, заданную по умолчанию.
SetIndicators
BOOL SetIndicators(const UINT* lpIDArray, int nIDCount);
Возвращаемое значение
Ненулевое, в случае успешного завершения функции, и нулевое в противном случае.
Аргументы
"sectiontableheader"lpIDArray - указатель на массив идентификаторов.
"sectiontableheader"nIDCount - размерность массива, на который указывает аргумент lpIDArray.
Описание
Сопоставляет каждому идентификатору индикатора значение, указанное для него в массиве lpIDArray, загружает строковый ресурс, определенный для каждого идентификатора, и выводит его в соответствующей панели.
SetPaneInfo
void SetPaneInfo(int nIndex, UINT nID, UINT nStyle, int cxWidth);
Аргументы
"sectiontableheader"nIndex - индекс панели индикатора, для которой устанавливается данный стиль.
"sectiontableheader"nID - новый идентификатор для панели индикатора.
"sectiontableheader"nStyle - новый стиль панели индикатора. Может принимать следующие значения:
"sectiontableheader"SBPS_NOBORDERS - панель не имеет объемной рамки;
"sectiontableheader"SBPS_POPOUT - инвертированная рамка, такая что панель выглядит выступающей;
"sectiontableheader"SBPS_DISABLED - запрещает вывод текста в панель;
"sectiontableheader"SBPS_STRETCH - данная панель растягивается таким образом, чтобы заполнить все свободное место. Этот стиль может иметь только одна панель в строке состояния;
"sectiontableheader"SBPS_NORMAL - панель не растягивается, не имеет рамки и не выступает.
"sectiontableheader"cxWidth - новая ширина панели индикатора.
Описание
Устанавливает для панели индикатора новые идентификатор, стиль и ширину.
SetPaneText
BOOL SetPaneText(int nIndex, LPCTSTR lpszNewText, BOOL bUpdate = TRUE);
Возвращаемое значение
Ненулевое, в случае успешного завершения функции, и нулевое в противном случае.
Аргументы
"sectiontableheader"nIndex - индекс панели, в которую необходимо вывести текст.
"sectiontableheader"lpszNewText - указатель на текстовую строку, содержащую выводимый текст.
"sectiontableheader"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 имеют следующие особенности:
"sectiontableheader"объект класса CString позволяет увеличивать размер хранимой в нем строки для размещения результата операции слияния строк;
"sectiontableheader"объект класса CString следует рассматривать как строку, а не как указатель на нее;
"sectiontableheader"объект класса CString самостоятельно преобразуется к типу const char* и LPCTSTR, что позволяет использовать его в качестве аргументов функций, имеющих данный тип;
"sectiontableheader"оператор явного преобразования типов позволяет получить доступ к содержимому объекта данного класса как к строке символов, имеющей атрибут только для чтения.
По возможности следует избегать создания динамических объектов класса CString. Это поможет сэкономить память, и упростит доступ к данному объекту.
Класс CString позволяет незначительно уменьшить объем используемой оперативной памяти за счет того, что две строки, имеющие одно и то же содержимое, разделяют одну и ту же область памяти. Однако эта копеечная экономия приводит к тому, что в случае непосредственного изменения содержимого буфера, содержащего данную строку (в обход функций библиотеки MFC) изменения будут внесены сразу в обе строки.
Класс CString включает в себя две функции, позволяющие защитить данные от подобных изменений: CString::LockBuffer и CString::UnlockBuffer. При вызове функции LockBuffer создается копия данной строки, а ее счетчик обращений устанавливается в -1, что означает передачу данной копии в безраздельное пользование данному объекту класса CString. В этом режиме никакой другой объект класса CString не может получить доступ к данной строке, а данный объект класса не может получить доступ к другой строке. Этот режим гарантирует, что все изменения, внесенные в данный объект, не приведут к порче информации, хранимой в других объектах. После завершения модификации новой строки вызывается функция UnlockBuffer, устанавливающая счетчик обращений в 1.
Класс CString не имеет базового класса.
Описание данного класса содержится в файле заголовка afx.h.
 
« Предыдущая статья   Следующая статья »