Методы класса CAtlString

Лекция 3.

Работа со строками. Управление отображением элементов управления.

Создаем новый проект – Приложение MFC, название проекта Project3.

Рис. 1.

Нажимаем на кнопку ОК. В появившемся диалоговом окне Мастера приложений, в левой части окна выбраем пункт меню Тип приложения, и в диалоговом окне ставим переключатель напротив пункта На основе диалоговых окон. Остальные параметры можно оставить без изменений.

Рис. 2.

Нажав на кнопку Готово будут созданы необходимые файлы проекта, и откроется редактор ресурсов, в котором проектируется внешний вид диалогового окна приложения. Надпись «TODO: Разместите здесь элементы управления диалоговым окном.» по центру диалогового приложения можно сразу удалить, она не понадобится.

Рис. 3.

Необходимо разработать программу, которая отображает координаты положения курсора на диалоговом окне. Координаты должны обновляться при перемещении курсова и выводиться в элемент управления Static Text.

Прежде всего следует разместить на диалоговом окне элемент Static Text, как показано на рисунке.

Рис. 4.

После этого следует открыть окно свойств этого элемента нажав на нем один раз правой кнопкой мыши и выбрав пункт Свойства в выпадающем меню. В окне свойств найти поле ИД и отредактировать его вручную, изменив с IDC_STATIC на IDC_STATIC1. Это единственный єлемент управления, для которого необходимо выполнить такие действия. При добавлении нового элемента Static Text его идентификатор по умолчанию IDC_STATIC. При этом если на диалоге будет распологаться несколько таких элементов, и у всех будет одинаковый идентификатор, то программно не получится получить к ним доступ и обновлять информацию.

Рис.5.

Теперь вызываем окно Мастера классов (Ctrl+Shift+X), в котором связываем переменную с элементом управления Static Text, который только что был добавлен на диалог.

Рис. 6.

Нажимаем на кнопку Добавить переменную, предварительно выбрав в окне Переменные члены идентификатор того элемента управления, для которого добавляется переменная. В нашем случае это IDC_STATIC1. В появившемся диалоговом окне вводим имя переменнйо и выбираем ее тип.

Рис. 7.

Координаты будут выводиться в текстовом виде. Есть 2 способа это сделать. Первый способ подразумевает создание переменной категории Value и типа CString. В этом случае для вывода текста в элемент управления достаточно присвоить ей новое значение и вызвать функцию UpdateData(false), после выполнения которой на экране отобразится новое значение. Второй способ состоит в обращении к элементу управления как к экземпляру класса CStatic. В этом случае для вывода текста в элемент управления необходимо вызывать функцию m_static.SetWindowTextW(str), где str – переменная, в которой хранится текстовая строка. Именно второй способ используется в программе.

После того, как переменная связана с элементом управления, необходимо добавить обработчик события передвижения курсора мышки. Для этого снова используется Мастер классов, только теперь следует переключится на закладку Сообщения (рис. 8), и в списке Сообщения выбрать событие WM_MOUSEMOVE – событие перемещения мышки. Далее следует нажать на кнопку Добавить обработчик. Нажав на кнопку ОК откроется файл с созданной функцией-обработчиком события, в котором необходимо написать код программы.

void CProject3Dlg::OnMouseMove(UINT nFlags, CPoint point)

{

// TODO: добавьте свой код обработчика сообщений или вызов стандартного

CDialogEx::OnMouseMove(nFlags, point);

}

В эту функцию передаются 2 параметра. Параметр nFlags содержит код нажатых клавишь при перемещении курсора. В этом примере не используется. Второй параметр point – это объект, который содержит координаты положения курсора мышки. Именно они нам и нужны.

Рис. 8.

Для отображения коорднат мышки вместо текста комментария:

// TODO: добавьте свой код обработчика сообщений или вызов стандартного

добавляем код:

CAtlString str; //объявляем строку

str.Format(_T("x=%d, y=%d"), point.x, point.y); // форматируем строку

m_static.SetWindowTextW(str); // выводим текст в окно

После запуска программы на выполнение появится диалоговое окно приложения.

Рис. 9.

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

Рис. 10.

Добавляем обработчик на кнопку Show. Для этого можно дважды нажать на ней левую кнопку мыши. Откроется файл с кодом программы и отобразится обработчик нажатия на эту кнопку, в котором необходимо написать свой код. Чтобы скрыть элемент управления Static Text, в котором отображаются текущие координаты курсора, необходимо обратится к этому элементу с помощью переменной, которая была создана ранее – переменная m_static, и вызвать метод ShowWindow(SW_HIDE):

void CProject3Dlg::OnBnClickedButton2()

{

// TODO: добавьте свой код обработчика уведомлений

m_static.ShowWindow(SW_HIDE);

}

В обработчике нажатия на кнопку Show необходимо добавить следующий код:

void CProject3Dlg::OnBnClickedButton1()

{

// TODO: добавьте свой код обработчика уведомлений

m_static.ShowWindow(SW_SHOW);

}

После запуска приложения можно проверить работу программы. Нажав на кнопку Hide элемент Статический текст, в котором отображаются координаты курсора, станет невидимым. Чтобы сделать его видимым следует нажать на кнопку Show.

Описанный подход аналогичный для всех элементов управления, т.к. они наследуются от общего класса CWnd. Управлять видимостью элементов управления, их внешним видом, размерами можно только в том случает, если с элементом управления связана переменная категории Control. Если же требуется только получить или отобразить значение в элементе управления, то удобнее использовать переменную категории Value. При создании такой переменной можно выбрать тип данных (текст, число и др.), что очень удобно, т.к. преобразование типов данных и проверка будет выполнятся автоматически, что упрощает программный код. Управление видимостью элементов управления и их внешний мвидом используется при построении адаптивных интерфейсов, где сложность интерфейса может определяться уровнем подготовки пользователя, или же скрывать элементы управления, если польователь не имеет соответствующих прав доступа.

Далее представлено описание наиболее важных и часто используемых классов, и их методов.

Методы класса CAtlString

Конструкторы

CAtlString -создает объекты CString различными способами.

Методы “String как Массив”

GetLength -возвращает число символов в объекте CString.

IsEmpty -проверяет, не содержит ли объект CString каких либо символов.

Empty -делает длину стоки нулевой.

GetAt -возвращает символ указанной позиции.

SetAt -устанавливает символ в указанную позиции.

Методы Сравнения

Compare -сравнивает две строки (чувствительна к регистру).

CompareNoCase -сравнивает две строки (нечувствительна к регистру).

Методы Извлечения

Mid -извлекает среднюю часть строки (подобно функции Бейсика MID$).

Left -извлекает левую часть строки (подобно функции Бейсика LEFT$).

Right -извлекает правую часть строки (подобно функции Бейсика RIGHT$).

SpanIncluding -извлекает подстроку, которая содержит только символы в наборе.

SpanExcluding -извлекает подстроку, которая содержит только символы вне набора.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: