Cтраница 4
Функции, определенные внутри класса, называются функциями-членами или методами класса. В этом примере переменные-члены - Left, Top, Right и Bottom, а функция-член - Draw. Обратите внимание: функция-член может содержать ссылку на любую переменную класса, не используя при этом специальный синтаксис. [46]
Конструкторы преобразования класса указывают компилятору, как преобразовать какой-либо тип данных в объект класса. Кроме того, можно написать функцию преобразования, предоставляющую компилятору способ преобразования объекта класса в данные какого-либо другого типа. Функция преобразования определяется как функция-член и подобна функции-оператору, используемой для перегрузки стандартных операторов. Однако функция преобразования менее универсальна, чем аналогичный конструктор, и должна быть тщательно продумана во избежание неопределенности. [47]
При рассмотрении оконной процедуры говорилось, что поступающие в нее сообщения обрабатываются индивидуально. Там же мы упомянули о существовании специального типа функций, каждая из которых отвечает за обработку одного и только одного сообщения. Аналогичный подход реализован и в библиотеке классов MFC, где для обработки каждого отдельного сообщения используется специальная функция-обработчик. Все функции-обработчики являются функциями какого-либо класса, и для них используются названия: функция-член обработчик сообщения, функция обработчик сообщения или просто обработчик сообщения. Принципы работы обработчиков сообщений не изменяются от того, к какой категории относится сообщение, однако механизмы их вызова различны. Но прежде чем рассматривать механизмы посылки и получения сообщений, необходимо понять, каким образом сопоставляются сообщение и соответствующий ему обработчик. [48]
POINT, етоскольку члены класса хну являются приватными. Все что можно предпринять - это нспольэовдть для обработки ючск общедоступные функции-члены. Лабы исключить возможную двусмысленность млн путаницу, можно было & ы записать ( Ьс this-x - A xP - ключевое слове thLs относится к указателю на объект, для которого вызывается функция-член. [49]
![]() |
Программа Mandel с завершенным рекурсивным узором. [50] |
Функция Onidle вызывается периодически ( из главного цикла обработки сообщения MFC) во время простоя программы, т.е. когда она не занята обработкой сообщения. Вначале Onidle вызывает вариант функции Onldle из базового класса для выполнения стандартных действий программы. Далее добавленный к функции Onidle код вызывает функцию CFrameWnd: : GetActiveView, чтобы получить указатель на объект представления. Переменная m pMainWnd класса приложения сохраняет адрес объекта главного окна и используется для вызова функции GetActiveView. Вызывается функция-член DrawColor класса представления ( определена ниже), чтобы нарисовать единственный столбец рекурсивного узора. Наконец, обработчик Onidle возвращает значение TRUE, так что MFC будет продолжать периодически ее вызывать. Если функция Onidle возвращает значение FALSE, то MFC не будет ее вызывать до получения программой следующего сообщения. [51]
Как видно из кода ввода-вывода, добавленного в программу Mini Draw, объект класса, сохраняющий данные, обычно отвечает за их запись на диск и чтение с диска. Этот класс должен предоставлять функцию Serialize, обеспечивающую чтение и запись. Общий принцип объектно-ориентированного программирования состоит в том, что каждый объект работает с собственными данными. Например, объект может нарисовать, прочитать, сохранить себя или выполнить другие характерные операции с собственными данными. Для переменных, являющихся объектами класса, вызывается функция-член Serialize их собственного класса. [52]