
- •6. Использование указателя this. Встраиваемые (inline-) функции. Статические члены класса.
- •8. Перегрузка функций (методов класса). Почему следует использовать перегрузку. Перегрузка функций. Перегрузка конструкторов.
- •10.Перегрузка операций (операторов). Понятие перегрузки операторов. Синтаксис перегрузки операции. Перегрузка бинарных операторов.
- •11. Перегрузка операций (операторов). Перегрузка операторов отношения и логических операторов. Перегрузка оператора присваивания. Перегрузка унарных операторов.
- •12. Перегрузка операций (операторов). Перегрузка операторов инкремента и декремента. Перегрузка оператора индексирования. Перегрузка оператора вызова функции.
- •13.Перегрузка операций (операторов). Перегрузка операторов доступа к членам класса. Перегрузка операторов new и delete. Функции преобразования типа.
- •14. Наследование. Производные классы. Синтаксис производного класса. Простое наследование. Множественное наследование. Виртуальные базовые классы. Создание производных классов.
- •15. Полиморфизм и виртуальные функции. Раннее и позднее связывание. Динамический полиморфизм. Виртуальные функции. Виртуальные и невиртуальные функции.
- •16. Полиморфизм и виртуальные функции. Применение динамического полиморфизма. Виртуальные деструкторы. Абстрактные классы и чисто виртуальные функции.
- •Void *memset(void *dest, int cchar, size_t count);
- •25. Стандартный класс string. Конструкторы строк. Изменение величины строки и ее емкости. Присваивание, добавление и обмен строк. Доступ к символам строки.
- •26. Стандартный класс string. Копирование строк и подстроки. Сравнение строк. Операции поиска.
- •27. Стандартный класс string. Вставка символов в строку. Замена и удаление символов из строки. Операции ввода-вывода строк.
- •Int main ()
- •28. Шаблоны. Шаблоны функций. Перегрузка шаблонов функций. Специализация шаблонов функций. Шаблоны функций сортировки.
- •29. Шаблоны классов. Конкретизация шаблона класса. Специализация шаблонов классов. Статические члены шаблонного класса.
- •30.Ключевое слово typename. Недостатки шаблонов.
- •Символьные функции (ctype.H)
- •Проверка, является ли символ цифрой, буквой или символом ascii
- •Проверка на управляющий символ, разделительный символ (пробел, табуляция, перевод строки) и знак препинания
- •Преобразования в код ascii, к верхнему и нижнему регистрам
- •41. Строковые функции (string.H). Работа с функциями манипуляции памятью. Нахождение символа в строке. Сравнение символов в строках. Заполнение буфера при помощи memset().
- •Работа с функциями манипуляции памятью
- •Нахождение символа в строке
- •Сравнение символов в строках
- •Заполнение буфера при помощи memset()
- •Сравнение содержимого двух строк
- •Приведение символов к верхнему регистру
- •43. Математические функции (math.H). Построение таблицы значений тригонометрических функций.
- •Построение таблицы значений тригонометрических функций
- •Структуры для представления даты/времени и параметры функций
- •Работа с функциями localtime() и asctlme()
- •Работа с функциями gmtime() и asctime()
- •Работа с функцией ctime()
- •45. Общие принципы и средства программирования для Windows. Язык Windows. Краткий обзор среды Windows. Преимущества использования Windows.
- •46. Общие принципы и средства программирования для Windows. Графический интерфейс пользователя. Многозадачная среда. Преимущества ввода посредством очереди.
- •48. Программирование для Windows: принципы и понятия. Окно Windows. Элементы интерфейса Windows.
- •49. Программирование для Windows: принципы и понятия. Рамка окна. Заголовок окна. Кнопка оконного меню. Оконное меню. Кнопка свертывания окна. Кнопка развертывания окна.
- •50.Программирование для Windows: принципы и понятия. Вертикальная полоса прокрутки. Горизонтальная полоса прокрутки. Панель меню. Рабочая область окна.
- •52. Программирование для Windows: принципы и понятия. Окна сообщений Windows. Окна диалога Windows. Шрифты Windows. Растровые изображения Windows. Перья Windows. Кисти Windows.
- •61.Новое поколение Windows. Передача информации с помощью сообщений. Независимость от драйверов аппаратуры. Plug-and-play. Библиотеки динамической компоновки. 16 бит против 32 бит.
- •62. Новое поколение Windows. Различные аппаратные платформы. Различные программные платформы. Многопроцессорные системы. Гибкость.
- •63.Новое поколение Windows. Распределенные вычисления. Сертифицированная правительством система обеспечения безопасности. Открытая архитектура систем Windows. Сбои системы. Виртуальная память.
- •64.Требования к программному и аппаратному обеспечению Windows приложений. Требования к программному обеспечению. Требования к аппаратуре.
- •65. Понятия и терминология Windows. Окно Windows. Визуальные компоненты интерфейса. Рамка. Заголовок окна. Кнопка управления или кнопка завершения.
- •66. Понятия и терминология Windows. Системное меню. Кнопка минимизации. Кнопка максимизации. Кнопка завершения.
- •67. Понятия и терминология Windows. Вертикальная полоса прокрутки. Горизонтальная полоса прокрутки. Полоса меню. Клиентская область.
- •68. Классы окон. Объектно-ориентированное программирование. Пиктограммы. Курсоры. Текстовые курсоры. Окна сообщений.
- •71. Ресурсы Windows. Функции Windows. Windows.H и связанные файлы заголовков. Нотация и правила подготовки программ Windows.
- •73. Доступ к оболочке Windows. Система координат. Основные режимы отображения. Координаты устройства.
- •77. Виртуальные клавиши. Системные таймеры. Срабатывание таймера. Эффективное использование механизма таймеров.
- •78. Память. Распределение памяти с помощью операционной системы. Уменьшение количества объектов. Уменьшение размера объекта. Использование перемещаемых объектов.
- •79. Простое приложение Windows. Оболочка для всех приложений. Эффективное использование описателей. Компоненты приложения Windows. Функция WinMain(). Регистрация класса окна.
- •80. Простое приложение Windows. Style. LpfnWndProc. CbClsExtra. CbWndExtra. Hinstance. HIсоn. HCursor. HbrBackground. IpszMenuName. IpszClassName.
- •81. Простое приложение Windows. Создание окна. Отображение и перерисовка окна. Цикл обработки сообщений. Функция GetMessage(). Функция TranslateMessage(). Функция DispatchMessage().
- •82. Простое приложение Windows. Функция окна. Сообщение wm_paint. Сообщение wm_destroy. Функция DefWindowProc(). Написание файла определения модуля.
- •83. Простое приложение и шаблон. Рисование эллипса. Рисование сегмента. Рисование сектора. Рисование прямоугольника.
- •84. Шаблоны приложения. Использование шаблона для создания программы, изображающей синусоиду. Файлы заголовков Windows. Файлы ресурсов. Создание программы для вывода круговых диаграмм.
- •85. Управление окном Windows. Понимание полос прокрутки. Терминология полос прокрутки. Константы полос прокрутки. Диапазон полосы прокрутки. Положение полосы прокрутки. Типы полос прокрутки.
- •96 Работа с ресурсами шрифта. Терминология шрифтов Windows. Константы шрифта. Структура textmetric. Структура logfonta. Ячейка символа шрифта.
- •97 Основные характеристики шрифта. Ширина шрифта. Автоматические кернинг и установка межстрочного интервала. Множества символов oem и ansi.
- •98 Основные характеристики шрифта. Логические и физические шрифты. Векторные, растровые шрифты и шрифты TrueType. Схема отображения шрифтов.
- •99 Выбор семейств шрифтов. Стандартные шрифты. Принтерные шрифты.
- •100 Приложения, управляющие шрифтами. Функция CreateFont(). Функция CreateFontlndirect().
- •102. Средства и методы gdi. Перья. Кисти. Изменение цветов фона. Изменение цветов текста.
- •104 Работа с битовыми образами. Функции BitBlt() и PlgBlt(). Загрузка и вывод на экран битовых образов. Обработка битовых образов при помощи функции Windows nt MaskBlt().
- •105. Вращение графических образов. Вращение прямоугольника.
- •108. Разработка приложений Win32. Важные изменения для переносимости программ в Windows 95 или Windows nt. Типы и структуры данных для Win32. Описатели в Win32.
- •Важные изменения для переносимости программ в Windows 95 или Windows nt.
- •Описатели в Win32.
- •109 Разработка приложений Win32. Менеджер палитр. Использование логической палитры.
- •110 Разработка приложений Win32. Шаблон приложения win32swp. Особенности поддержки Win32 в win32swp.C. Функция WinMain(). Регистрация класса окна. Создание окна.
- •111. Разработка приложений Win32. Отображение и перерисовка окна. Цикл обработки
- •112 Разработка приложений Win32. Функция окна. Обработка сообщений wm_paint. Обработка сообщения wm_destroy. Функция DefWIndowProc().
- •113 Подключение ресурсов. Приложение Win32 win32bar. Круговая диаграмма. Приложение pie.Cpp.
- •116. Библиотека Microsoft Foundation Classes. Необходимость библиотеки mfc. Принципы построения библиотеки mfc. Основные возможности библиотеки mfc.
- •117. Библиотека Microsoft Foundation Classes. Все начинается с cObject. Важнейшие классы библиотеки. Создание приложения mfc Windows. Выбор количества окон, которые будут поддерживаться приложением.
- •118. Библиотека Microsoft Foundation Classes. Базы данных. Поддержка составных документов. Внешний вид приложения и другие опции. Другие опции.
- •119. Библиотека Microsoft Foundation Classes. Имена файлов и классов. Создание приложения. Поработайте самостоятельно.
- •120. Упрощенное приложение. Вывод окна в приложении 23simple.Cpp. Использование afxwin.H. Создание класса, производного от cWinApp. CFrameWnd.
- •121. Упрощенное приложение. Реализация метода Inltlnstance(). Конструктор. Запуск 23simple.Cpp. Упрощение структуры облегчает сопровождение.
- •124. Диалоговые окна и элементы управления. Формирование ресурсов диалогового окна. Задание идентификаторов диалогового окна и элементов управления. Создание диалогового окна Sample Dialog.
- •128. Линейчатая диаграмма с использованием меню и окон диалога.
- •Заголовочный файл 24bar.H.
- •Заголовочный файл ресурсов 24barr.H, файл описания ресурсов 24bar.Rc и файл описания окна диалога 24bar.Dlg.
- •Исходный текст программы 24bar.Cpp.
- •Особенности Microsoft Foundation Classes, относящиеся к Windows 95 и nt.
- •Изучаем win32mfctmp.Cpp.
- •130. Научная графика с использованием ресурсов: меню, окна диалога и мультимедийного звука. Заголовочный файл win32mfcfour.H. Заголовочный файл ресурсов
46. Общие принципы и средства программирования для Windows. Графический интерфейс пользователя. Многозадачная среда. Преимущества ввода посредством очереди.
Самое заметное, а также наиболее важное для пользователя свойство Windows — это стандартный графический интерфейс. Этот интерфейс применяет значки (icon) для обозначения логических устройств, файлов, каталогов и множества системных команд и процессов. Типичное окно Windows изображено на рисунке. Название программы отображается на панели заголовка ее главного окна. Все основные функции работы с файлом доступны из меню, которое управляется при помощи мыши. Большинство программ Windows имеют и интерфейс клавиатуры, и интерфейс мыши. Обычно пользователи предпочитают мышь, хотя основные функции Windows доступны также с клавиатуры. Все приложения Windows имеют схожий вид. Когда пользователь осваивает использование основных команд Windows, изучение новых программ становится гораздо легче.
Стандартный пользовательский интерфейс дает определенные преимущества и программисту. Например, вы сможете использовать встроенные функции Windows для создания меню и окон диалога. Все меню одинаково взаимодействуют с клавиатурой и мышью, поскольку о них заботится Windows, а не программист.
Многозадачная среда Windows позволяет выполнять одновременно несколько приложений, а также несколько копий одного и того же приложения. Но в каждый момент времени лишь одно приложение может использовать процессор. Очень важно различать приложение, которое просто находится в процессе выполнения, и приложение, использующее процессор в данный момент. Есть еще третье важное состояние: приложение может быть активным. Активным приложением называется то, с которым работает пользователь. В заданный момент времени может существовать лишь одно активное приложение, подобно тому, как в данный момент только одно приложение может использовать процессор. Тем не менее, в системе может быть любое количество параллельно выполняемых процессов. Разделение процессорного времени, называемое квантованием (time slicing), находится в компетенции Windows. Только Windows распоряжается выделением процессора, используя очереди сообщений.
До появления многозадачности в 16-разрядной Windows приложения считали возможным полностью управлять ресурсами компьютера, включая устройства ввода/вывода, память, дисплей и даже сам центральный процессор. Под управлением Windows все эти ресурсы должны быть доступны сразу нескольким программам. Например, управление памятью осуществляется Windows, а не прикладной программой.
Под Windows разделяемым ресурсом является не только память, но и устройства ввода, в частности, клавиатура и мышь. Приложение Windows никогда не использует непосредственных вызовов функций для опроса клавиатуры или мыши. Вместо этого Windows направляет весь ввод от клавиатуры, мыши и таймера в системную очередь. Поскольку в системе может выполняться несколько программ одновременно, в задачу очереди входит переадресация ввода в соответствующую программу. При этом происходит копирование сообщения из системной очереди в очередь приложения. После этого, когда приложение готово обработать ввод, оно считывает сообщение из очереди и отправляет его в соответствующее окно.
Ввод поступает в общем формате, называемом сообщением ввода (input message). Все сообщения ввода содержат информацию о системном времени, состоянии клавиатуры, коде нажатой клавиши, положении мыши и состоянии ее кнопок, а также о том, от какого устройства получено сообщение.
Сообщения от клавиатуры, мыши и таймера имеют одинаковый формат и обрабатываются сходным образом. С каждым сообщением Windows связывает аппаратно- независимый виртуальный код клавиши, который обозначает клавишу вне зависимости от того, на какой клавиатуре она находится. Кроме того, Windows сообщает зависимый от устройства скан-код, генерируемый клавиатурой, а также состояние других клавиш, в частности <NUM LOCK>, <ALT>, <SHIFT> и <CTRL>.
Клавиатура и мышь являются разделяемыми ресурсами: одна клавиатура и одна мышь должны обеспечить входной информацией все программы, выполняемые под Windows. Все сообщения от клавиатуры Windows пересылает прямо в активное окно. Напротив, сообщения от мыши обрабатываются по-другому: они попадают в то окно, в пределах которого находится курсор мыши.
Еще одним разделяемым ресурсом является таймер. Сообщения от таймера похожи на сообщения от клавиатуры и мыши. Windows позволяет программе установить системный таймер так, что одно из окон будет получать сообщения через заданный интервал времени. Сообщения от таймера поступают непосредственно в очередь приложения. В результате вызова некоторых функций Windows в очередь приложения могут быть помещены и другие сообщения.
47. Общие принципы и средства программирования для Windows. Объектный подход: сообщения. Управление памятью. Независимость от оборудования. Динамически подключаемые библиотеки. Новый формат исполняемых файлов Windows.
Для распространения информации в многозадачной среде Windows использует механизм передачи сообщений. С точки зрения приложения, сообщение уведомляет о некотором событии, которое может повлечь или не повлечь за собой определенные действия. События могут также инициироваться самим приложением.
Сама Windows также может генерировать сообщения, как, например, сообщение "конец сеанса работы", которым Windows уведомляет все приложения о завершении работы системы.
Оценивая значимость механизма сообщений, имейте в виду следующие соображения. Во-первых, именно система передачи сообщений обеспечивает многозадачность в Windows. Эта система позволяет Windows распределять процессорное время между несколькими приложениями. Каждый раз, когда Windows посылает программе сообщение, она также выделяет этой программе процессорное время. На самом деле программа получает возможность использовать процессор только тогда, когда ей приходит сообщение. Во-вторых, сообщения позволяют программе реагировать на внешние события. Такие события могут инициироваться пользователем, системой Windows, самой программой, а также другими приложениями. Каждый раз при появлении события Windows направляет соответствующие сообщения всем заинтересованным приложениям.
Один из важнейших разделяемых ресурсов Windows— оперативная память. Когда несколько приложений работают параллельно, все они обязаны совместно распоряжаться памятью так, чтобы не исчерпать ресурсы компьютера. Кроме того, когда завершаются одни программы и запускаются другие, память может стать фрагментированной. Windows может дефрагментировать свободное пространство путем перемещения сегментов кода и данных в памяти.
Может также возникнуть ситуация, когда памяти недостаточно. Windows может освободить временно не используемые блоки кода, а затем при необходимости загрузить код из исполняемого файла программы.
Приложения Windows могут вызывать процедуры из других исполняемых файлов. Файлы, содержащие такие процедуры, называются динамически подключаемыми библиотеками. У Windows есть возможность связать программу с DLL во время выполнения программы. Сама Windows является набором DLL. Чтобы обеспечивать все эти возможности, Windows пользуется исполняемыми файлами специального формата, который называется новым форматом исполняемых файлов (New Executable Format). Файлы этого формата включают в себя информацию, которая необходима Windows для управления сегментами кода и данных и осуществления динамической компоновки.
Windows обеспечивает также независимость от оборудования. Благодаря Windows программе уже не нужно учитывать особенности всех существующих мониторов, принтеров и устройств ввода, имеющихся сейчас на рынке.
В Windows для каждого устройства нужен всего один драйвер.
Windows независимость от аппаратуры. Независимость от аппаратуры достигается засчет определения набора элементарных операций, производимых оборудованием. Если оборудование поддерживает необходимые элементарные операции, с ним смогут работать функции Windows. Каждая функция, независимо от сложности, может быть реализована как последовательность элементарных операций.
Динамически подключаемые библиотеки обеспечивают большую часть функций Windows. Они расширяют базовую операционную систему, обеспечивая гибкий и мощный графический интерфейс пользователя. Динамически подключаемые библиотеки содержат функции, которые связываются с прикладной программой при ее запуске (динамически), в отличие от функций, компонуемых статически, то есть при генерации исполняемого файла. Динамически подключаемые библиотеки обычно находятся в файлах с расширением DLL.
Библиотеки Windows компонуются динамически. Другими словами, компоновщик не копирует функции из библиотеки в исполняемый файл. Вместо этого программа обращается к библиотечным функциям во время ее выполнения. Естественно, при этом экономнее расходуется память. Независимо от количества работающих приложений, в оперативной памяти находится всего одна копия библиотеки, которую может использовать любое приложение.
Формат файлов, разработанный для Windows, называется новым форматом исполняемых файлов. Этот формат включает новый тип заголовка, который может содержать информацию о функциях, которые необходимо вызывать из динамически подключаемых библиотек.
Например, в новый заголовок включается информация обо всех функциях, вызываемых из модулей KERNEL, USER и GDI. Эти библиотеки содержат функции для выполнения различных действий, например, прием и передача сообщений. Функции из библиотек могут вызываться приложениями или другими библиотеками. Библиотечные функции, которые могут вызываться внешними модулями, называются экспортируемыми. В исполняемом файле нового формата каждой экспортируемой функции соответствуют имя и порядковый номер. В новый формат файла входит раздел, называемый таблицей точек входа, где перечислены адреса всех экспортируемых функций данного модуля.
С точки зрения прикладной программы, используемые ею библиотечные функции являются импортируемыми. Импортируемые функции используют различные таблицы перемещения, которые обеспечивают корректность дальних вызовов этих функций из приложения. Практически все программы Windows содержат как минимум одну экспортируемую функцию. Это функция окна, которая обрабатывает приходящие окну сообщения. Такая функция должна быть объявлена в приложении экспортируемой, чтобы Windows могла корректно вызывать ее из внешних модулей.
Новый формат включает также дополнительную информацию о каждом сегменте кода или данных. Как правило, сегменты кода объявляются подвижными (moveable) и выгружаемыми (discardable), а сегменты данных объявляются подвижными, но не выгружаемыми. Это позволяет Windows перемещать сегменты кода и данных в памяти, и даже выгружать сегменты кода при нехватке памяти. Если Windows позже потребуется выгруженный сегмент кода, она сможет загрузить его из соответствующего исполняемого файла. Еще одна возможная характеристика сегмента называется «загружаемый при обращении» (load on call). Она указывает на то, что сегмент кода программы или библиотеки вообще не будет загружен в память до тех пор, пока одна из входящих в него функций не будет вызвана из другого сегмента.