
- •1. Признаки сложных систем. Сложность, присущая программному обеспечению.
- •2. Компоненты объектно-ориентированного подхода.
- •3. Объекты и классы с точки зрения объектно-ориентированного проектирования.
- •4. Модели и диаграммы, используемые в объектно-ориентированном подходе.
- •5. Техника отладки.
- •6. Работа с многофайловыми проектами. Использование включаемых файлов.
- •9. Простое наследование. Контроль доступа к атрибутам класса.
- •10. Виртуальные функции (вф) и абстрактные классы.
- •11. Множественное и виртуальное наследование.Множественное наследование
- •12 Перегрузка операций
- •13. Шаблоны функций, макросы, inline-функции.
- •14. Шаблоны классов.
- •15. Обработка исключительных ситуаций, структурная обработка исключений.
- •16. Пространства имён. Кратко о механизме пространства имен
- •Зачем нужен механизм пространства имен?
- •Имитация средствами языка Си
- •Правило составления имени
- •Недостатки
- •17 Строки и потоки.
- •18.Стандартная библиотека: Контейнеры
- •19 Реализация устойчивости объектов средствами mfc.
- •20. Структура Windows-приложения WinApi
- •21. Структура Windows-приложения, использующего библиотеку mfc
- •Документы и их представление
- •22. Обработка сообщений
- •23. Контекст устройства
- •24.Объекты gdi
- •25.Использование контекста отображения в памяти.
- •26.Режимы отображения.
- •27.Работа с меню. Обработка сообщений.
- •28.Работа с диалогами. Обработка сообщений.
- •29. Работа с полями ввода и кнопками.
- •30. Работа со списками и выпадающими списками. Работа со списком
- •Работа с комбинированном списком
- •Инициализация
- •Операции со строками
- •31. Классы CimageList и CtreeCtrl. Класс cImageList
- •Изменение содержимого списка
- •32. Классы CimageList и ClistCtrl. Класс cImageList
- •Изменение содержимого списка
- •Создание просмотра списка
- •Работа со столбцами
- •Функции для работы со списком в целом
- •Рабочие области просмотра списка
- •Поиск и сортировка записей
- •33. Классы CprogressCtrl, cRichEdit Ctrl, CsliderCtrl, cSpinButton Ctrl.
- •34. Классы cPropertySheet и cPropertyPage.
- •35. Передача информации в диалог и обратно.
- •36. Работа со стандартными диалогами.
- •37.Обработка сообщений от клавиатуры и мыши(wm_char,wm_keYxxx,wm_xButtoNxxx,
- •38 Таймеры, использование времени простоя программы и локального цикла обработки сообщений.
- •39. Библиотеки динамической компоновки. Явная и неявная загрузка dll.
- •Согласование экспортируемых элементов с импортируемыми
Рабочие области просмотра списка
В элементе управления “просмотр списка” реализована поддержка рабочих областей –прямоуг. виртульных областей, используемых для упорядочивания элементов просмотра списка.В каждом случае перемещение элементов возможно только внутри области. Каждая из таких областей может иметь свои гориз. полосы прокрутки.
Для создания такой области исп. фу-цию:
Void ClistCtrl :: SetWorkAreas (int nWorkAreas, LPRECT prc) - // пар. nWorkAreas – определяет номер создаваемой рабочей области, prc указывает на адресс памяти, гда записаны ее координаты (в единицах клиенитской области). Создавать раб. обл. можно только для режима крупных или мелких значков.
Изменение содержимого просмотра списка
След. фу-ции предназначены для работы с конкретными записями, а также для их добавления, изменения и удаления.
int ClistCtrl :: GetItemCount () - // возвращает число записей в просмотре списка.
void ClistCtrl :: SеtItemCount () - // подготавливает просмотр списка к добавлению большого кол-ва новых записей.
Поиск и сортировка записей
Первая фу-ция этой группы предназначена для нахождения записи с определенными св-ами:
int ClistCtrl :: GetNextItem (int nItem, int nFlags) - // в случае успешного завершения возвращает индекс найденной записи, иначе –1. Параметр nItem задает индекс записи, с кот. нач. поиск , сама она из списка исключается. Если задано значение –1, то поиск идет с начала списка. Пар. nFlags задает пространственное расположение записи, поиск которой осуществлется, и ее состояние. Рсположение может определятся след. флагами:
LVNI_ABOVE Поиск идет вверх от указанной записи
LVNI_ALL Поиск идет по индексам (по умолчанию)
LVNI_BELOW Поиск идет вниз от указанной записи
LVNI_TOLEFT Поиск идет влево от указанной записи
LVNI_TORIGHT Поиск идет вправо от указанной записи
BOOL ClistCtrl ::SortItems (PFNLVCOMPARE pfnCompare, DWORD dwData) -// осуществляет сортировку записей просмотра списка, используя определяемую приложением фу-цию для сравнения записей, индексы записей при этом изменяются отражая при этом новый порядок записей в списке. Пар. pfnCompare указывает на определяемую приложением фу-цию сравнения записей. Эта фу-ция вызывается всякий раз в процессе сортировки , когда необходимо сравнить две записи. Пар. dwData – позволяет передавать в фу-цию сравнения некоторое значение в качестве третьего параметра.
33. Классы CprogressCtrl, cRichEdit Ctrl, CsliderCtrl, cSpinButton Ctrl.
Класс СprogressCtrl (Индикатор)
CObject CCmdTarget CWnd CProgressCtrl
Индикатор - это дочернее окно которое можно использовать в приложении для индикации процесса выполнения некот. длительной операции. Такое окно предситавляет собой вытянутую и расположенную горизонтально , а теперь и вертикально, прямог. область (полосу).
Цвет индикатора определяется системными установками и изменению не подлежит.
Биб. классов MFC сод. класс CProgressCtrl , который обеспечивает интерфейс между приложением и объектом Windows “индикатор”. Этот класс имеет конструктор, задача которого – создание объекта класса, собственно же элемент индикации может быть создан при помощи фу-ции Create.
BOOL CProgressCtrl :: Create (DWORD dwStyle,const RECT&rect,CWnd* pParentWnd, UINT nID) - // Пар. dwStyle содержит любую скомбинацию стилей элементов управления. Параметр rect местопол. и размер элемента управления.Пар. pParentWnd должен указ. на род. окно (не рав. NULL). Пар. nID обеспеч. окно индентификатором, исп. кот. позволяет взаимодействовать с окном. Прилагаются два стиля:
PBS_VERTICAL Идикатор прасполагается вертикально - “всерху вниз”. Без этого флага расположение стандартное - “слева направо”
PBS_SMOOTH Область индикации заполняется непрерывно. Без этого флага заполнение осуществляется блоками.
Реализация процесса и его взаимосвязи с индикацией – полностью задача разработчика приложения. Собственно индикатор является лишь средством отображения отношения двух чисел. Первое определяется величиной некоторого интервала, а второе – смещением от начала интервала.
Для задания интервала класс CProgressCtrl теперь имеет две фу-ции SetRange и SetRange32:
void CProgressCtrl ::SetRange(
short nLower,
short nUpper)
и
void CProgressCtrl ::SetRange32(
int nLower,
int nUpper) - // параметры nLower и nUpper определяют его нижнюю и верхнюю границы соотв.
Текущее значение индикатора может быть установлено тремя различными способами.
Можно непосредсвенно задать текущее значение:
int CProgressCtrl::SetPos (int nPos) - // эта фу-ция не только задает текущее значение (параметр nPos), но и возвращает предыдущее значение индикатора. При неверном задании текущего значения (вне интервала) новое значение будет приведено к значению ближайшей границы интервала.
Класс СRichEditCtrl (расширенный текстовый редактор)
Расширенный текстовый редактор представляет собой окно, в кот. пользоват. может вводить и редактировать текст.
CObject CCmdTarget CWnd CRichEditCtrl
Расширенный редактор, как элемент управления Windows, представлен в биб. MFS классом CRichEditCtrl. Создать редактор можно 2 способами.
Создание объекта класса CRichEditCtrl.
Конструктор без параметров:
CRichEditCtrl :: CRichEditCtrl () -// создает объект класса CRichEditCtrl
Для создания собственно расширенного редактора Windows и обеспечения его связи с объектом класса необходимо вызвать фук-цию Create.
BOOL CRichEditCtrl::Create (DWORD dwStyle, const RECT&rect, CWnd*pParentWnd, UINT nID )
// пар. dwStyle задает стили редактора, пар. rect задает размер и расположение окна редактора. Может быть объектом класса Crect или структурой RECT. Пар. pParentWnd задает род. окно. Значение этого параментра не должно быть рвно NULL. Пар. nID задает идентификатор редактора.
Изменение параметров редактора.
Кроме возможности задать стили редактора при его создании , при помощи фу-ций SetOptions и SetReadOnly можно впоследствии , т.е. после создания , изменить некоторые из заданных стилей или добавить новые.
void CRichEditCtrl :: SetOptipons (WORD wOp, DWORD dwFlags) - // позволяет установить или изменить ряд стилей объекта класса CRichEditCtrl. Пар. wOp определяет тип выполняемой операции и может принимать одно из след. значений.
Работа со строками.
int CRichEditCtrl ::GetLineCount () - // возвращает число строк в данном объекте CRichEditCtrl
int CRichEditCtrl ::GetLine (int nIndex, LPSTR lpsz Buffer)
и
int CRichEditCtrl ::GetLine (int nIndex, LPSTR lpsz Buffer, int nMaxLength)
- // копируют в буфер строку текста из объекта CRichEditCtrl . Пар. nIndex указывает индекс строки, в кот. должна быть скопированна строка. Пар. nMaxLength зад. макс. число символов, кот. могут быть скоп. в буфер.
Работа с буфером обмена.
Расшир. ред. имеет фу-ции, предназнач. для работы с буфером обмена.
void CRichEditCtrl::Copy () -// копирует выделенный текст в буфер обмена
void CRichEditCtrl::Cut () -// удаляет (выр.) выделенный текст (если он есть) в редакторе и копирует удаленный текст в буфер обмена. Для восстановления текста, удаленного фу-ей Cut, можно вызвать фу-цию Undo.
Для удаления выделенного текста без помещения его в буфер обмена служит фу-ция Clear.
void CRichEditCtrl::Paste () -// вставляет данные из буфера обмена в редактор с текущей позиции курсора. Данный вставляются лишь в том случае, если буфер обмена содержит данные в формате, который может быть распознан редактором.
Форматирование символов.
DWORD CRichEditCtrl :: GetDefaultCharFormat (CHARFORMAT&cf) - // позволяет получить текущее, устан. по умолчанию, форматирование символов и возвращает параметр dwMask структуры CHARFORMAT. Пар. cf – указатель на структуру типа CHARFORMAT, получающую ин-цию об атрибутах форматирования и определенную след. образом:
SetWindowsPos – задает размер и полож. окна ввода
GetWindowsText – получает из элемента управления неформат. текст
SetWindowsText – записывает в эл. управ. неформатированный текст
Get Modify - получет пизнак знач. кот. равно TRUE , если текст изменен.
Set Modify - устанав. признак модификации TRUE или FALSE.
Класс CSliderCtrl (линейка с ползунком)
CObject CCmdTarget CWnd CSliderCtrl
Линейка с ползунком- окно с линейкой, ползунком на ней и возможно метками.
Когда пользователь перемещает ползунок при помощи мыши или используя клавиши управления курсором, этот элемент управления посылает уведомляющие сообщения , позволяющие отслеживать производимые изменения.
Класс CSliderCtrl инкапсулирует возможности линейки с ползунком Windows, упрощая управление этим элементом.
Создание эл. управления.
BOOL CsliderCtrl:: Create (DWORD dwStyle,const RECT&rect, CWnd* pParentWnd, UINT nId) - //пар. dwStyle может содержать любые комбинации стилей элементов управления, включая след., свойственные рассматриваемому.
TBS_HORZ – Линейка имеет гориз. ориентацию (по умолчанию)
TBS_VERT – Л. имеет верт. ор.
TBS_BOTTOM – Л. имеет метку для конеч. полож. ползунка
TBS_TOP - Л. имеет метку для нач. полож. ползунка
пар. rect задает размер и расположение линейки, пар. pParentWnd – задает род. окно. (CDialog) не должен равнят. NULL, пар. nId – задает идентификатор линейки.
Параметры элемента управления.
Фу-ции GetRangeMax, SetRangeMax, GetRangeMin , SetRangeMin , GetRange , SetRange – максимальное, мин. положение ползунка.
Фу-ции GetLineSize и SetLineSize – величина единичных перемещений, уведомления у кот. производятся сообщениями TB_PAGEUP и TB_PAGEDOWN.
Фу-ция GetThumbRect – размер ползунка
GetThumbRect – размер элемента управления
GetToolTips, SetToolTips – текст всплывающей подсказки.
Положение меток.
DWORD* CsliderCtrl::GetTicArray () – возвращ. указатель на массив, содержащий положения всех меток элемента управления
ClearTics () - // удал. всех меток.
Положение ползунка.
Для получ. тек. полож. позунка исп. фу-ия GetPos, SetPos.
void CsliderCtrl ::VerifyPos() – фу-ия проверяет допустимость положения ползунка. Когда текущее положение лежит вне общего диапазона, она устанавливает ползунок в крайнее левое (верхнее) или правое (нижнее) положение, в зависимости от того, к какому положению ближе заданное.
Класс CspinButtonCtrl. (счетчик)
CObject CCmdTarget CWnd CspinButtonCtrl
Эл. упр. “счетчик” пред. собой пару кнопок со стрелками, назнач. которых – в смене значения, напр., уменьшение, либо увеличение числового значения. Кроме того эл.упр. можно ассоциировать с другим эл.упр. так, что его содержимое будет меняться под управлением спина.
Создание счетчика.
Конструктор класса создает только объект CspinButtonCtrl, для создания эл.упр. следует вызвать фу-цию:
BOOL CSpinButtonCtrl::Create(DWORD dwStyle, const RECT&rect,CWnd* pParentWnd, UINT nID) - // пар. dwStyle – может принимать любые комбинации стилей элементов управления плюс следующие, свойственные рассматр. эл. упр.:
UDS_HORZ Гор. Ориент. Счетчика (по умол. – верт.)
UDS_WRAP Поддерживается переход через граничные значения, в том случае после максимального значения текущим становится минимал. и наобороти
UDS_ALIGNRIGHT счетчик распол. в правой части ассоциированного окна, умен. его клиентскую область
UDS_ALIGNLEFT счетчик рапол. в левой части ассоциированного окна, умен. его клиентскую область
Параметры элемента управления.
SetPos - для установки значения счетчика
GetPos - для получения текущего значения счетчика
Тип текущего значения – целое число, следовательно для изменения содержимого ассоциированного окна, которое не является числом, следует использовать некоторое преобразование. В этом случае значение счетчика может использоваться в качестве индекса массива строк или объектов другово типа.
Обе фу-ции проверяют заданное значение или результат преобразования содержимого ассоциированного окна. Это значение должно лежать в пределах заданного диапазона. По умолчанию для счетчика задан диапазон от 100 до 0.
Для изменения диапазона следет использовать одну из фу-ций:
void CSpinButtonCtrl::SetRange (int nLower, int nUpper)
Или
void CSpinButtonCtrl::SetRange32 (int nLower, int nUpper)
-// пар. nLower и nUpper содержат значения границ диапазона.
Чтобы получить текущие значения границ диапазона изменения счетчика:
void CSpinButtonCtrl:: GetRange(int &lower, int&upper)
и
void CSpinButtonCtrl::GetRange32 (int &lower, int&upper)
-// возвращают 32-разрядные числа, содержащие нижнюю и верхнюю границу диапазона допустимых значений.