Московский государственный университет имени М.В.Ломоносова
Опубликован: 01.11.2004 | Доступ: свободный | Студентов: 11275 / 456 | Оценка: 4.12 / 4.01 | Длительность: 19:20:00
ISBN: 978-5-9556-0077-9
Специальности: Программист
Лекция 21:

Библиотека классов MFC среды проектирования Visual Studio .NET. Элементы управления

< Лекция 20 || Лекция 21: 1234 || Лекция 22 >
Класс CListBox

Элемент управления List Box "окно списка", называемый иногда просто списком, используется для работы с информацией, отображаемой в виде списка. Окно списка может быть реализовано как список с единичным или с множественным выбором.

Окно списка можно связать как с переменной типа CString, так и с объектом класса CListBox.

Свойство Selection позволяет устанавливать тип списка:

  • Single (по умолчанию) - пользователь может выделить только один элемент списка
  • Multiple - пользователь может одновременно выделить несколько элементов списка. Выделение элементов (или снятие выделения) осуществляется при щелчке или двойном щелчке мыши.
  • Extended - пользователь может одновременно выделить несколько элементов списка. Выделение элементов (или снятие выделения) осуществляется перемещением мыши при нажатой кнопке.
  • None - пользователь не может выделить ни одного элемента списка.

Класс CListBox предоставляет широкий набор методов для работы со списком, включая следующие:

  • GetCount - метод возвращает количество элементов в окне списка.
  • SetTopIndex - метод прокручивает окно списка к указанному элементу, отображая его первым видимым элементом.

Например:

extern CListBox* pmyListBox;
// Определение первым видимым элементом списка 
// элемента,расположенного посередине списка
pmyListBox->SetTopIndex(pmyListBox->GetCount()/2);
  • GetText - метод возвращает строку по указанному индексу элемента списка.

    Например:

    extern CListBox* pmyListBox;
       CString str, str2;
       int n;
       for (int i=0;i < pmyListBox->GetCount();i++)
       {
          n = pmyListBox->GetTextLen( i );
          pmyListBox->GetText( i, str.GetBuffer(n) );
          str.ReleaseBuffer();
         // Дампинг всех элементов списка  (#ifdef _DEBUG )
          str2.Format(_T("item %d: %s\r\n"), i, 
                      str.GetBuffer(0));
          afxDump << str2;
       }
  • SetCurSel - метод выделяет указанный элемент списка и при необходимости прокручивает окно списка так, чтобы выделенный элемент стал видимым.
  • GetSelCount - метод возвращает общее количество выделенных элементов в окне списка с множественным выбором.
  • AddString - метод добавляет в окно списка новый элемент, содержащий указанную строку.
  • DeleteString - метод удаляет из окна списка строку с соответствующим индексом.
  • InsertString - метод вставляет в указанное место окна списка новый элемент, содержащий заданную строку.
  • FindString - метод выполняет поиск указанной строки в окне списка.
  • ResetContent - метод удаляет все элементы окна списка.
Класс CAnimateCtrl

Класс CAnimateCtrl предоставляет функции управления анимацией в среде Windows.

Элемент управления, созданный как экземпляр данного класса, является объектом анимации. Такой объект представляет из себя обычное окно, в котором отображается некоторый клип, являющийся файлом в формате AVI (Audio Video Interleaved). AVI-файл содержит последовательный набор битовых изображений. Объекты анимации могут показывать только простые AVI-клипы.

Класс CComboBox

Класс CComboBox реализует функционирование комбинированного окна, иногда также называемого комбинированным окном списка.

Комбинированное окно представляет собой элемент управления, объединяющий окно списка с окном редактирования или со статическим элементом управления. Окно списка при этом может иметь как распахнутое (отображаемое постоянно), так и свернутое состояние (отображаемое только при щелчке пользователя на стрелке вниз).

Выбранный элемент списка отображается в окне редактирования или в окне статического элемента управления.

Метод GetLBText определяет строку текста, соответствующую указанному индексу элемента окна списка комбинированного окна. Метод GetCurSel возвращает индекс выделенного элемента окна списка комбинированного окна. Если выделенного элемента нет, то метод возвращает значение CB_ERR.

Например:

extern CComboBox* pmyComboBox;
// Выбор следующего элемента в окне комбинированного списка 
// после текущего элемента 
int nIndex = pmyComboBox->GetCurSel();    // Индекс текущего 
                             // элемента
int nCount = pmyComboBox->GetCount();    // Всего элементов 
                                 // в списке
if ((nIndex != CB_ERR) && (nCount > 1))
{
   if (++nIndex < nCount)  
      pmyComboBox->SetCurSel(nIndex);
   else                    
        pmyComboBox->SetCurSel(0);
}
Класс CRichEditCtrl

Элемент управления "окно расширенного редактирования" (rich edit control) позволяет пользователю не только редактировать текст, в отличие от элемента управления "окно редактирования", но также выполнять форматирование символов и абзацев, встраивать OLE-объекты.

Данный элемент управления обеспечивает программный интерфейс для форматирования текста, при этом в приложении должны быть реализованы все компоненты интерфейса пользователя, делающие доступными сами операции форматирования.

Метод GetDefaultCharFormat позволяет получить атрибуты форматирования символов по умолчанию. Атрибуты форматирования символов определяются в структуре типа CHARFORMAT, а атрибуты форматирования абзаца задаются в структуре типа PARAFORMAT. Метод GetLine копирует в буфер указанную строку текста.

Методы SetDefaultCharFormat и SetSelectionCharFormat позволяют установить атрибуты форматирования символов, используемые по умолчанию или для выделенного фрагмента текста соответственно.

< Лекция 20 || Лекция 21: 1234 || Лекция 22 >
Александр Демьяненко
Александр Демьяненко

Можно ли сдавать один и тот же тест несколько раз?
Или же один и тот же тест можно сдать лишь однажды?

Максим Стогний
Максим Стогний

Добрый день!

Скажите, пожалуйста, если в терминологии объектно-ориентированного программирования функции также называются методами или методами - членами класса, в примере объявления указателя на метод использовали в формальном описании оба названия:

тип_метода (имя_класса::*имя_метода_указателя)
    (список параметров);
тип_функции (*имя_ функции_указателя)
    (список параметров);

при этом можно было  тип_функции во втором описании заменить на тип_метода? Т.е.:

тип_метода (*имя_ метода_указателя)
    (список параметров);