Страница 4 из 40 Класс CDateTimeCtrl является классом обработки сообщений элемента управления Date Time Picker (Выбор даты и времени), используемого для ввода и вывода информации о дате и времени. Этот элемент управления имеет вид раскрывающегося списка, в текстовое поле которого, в зависимости от установленного стиля, выводится информация о дате или о времени. Эта информация структурирована и при редактировании отдельного ее компонента (дней, минут, секунд и т. д.) он выделяется синим прямоугольником. Для перемещения между отдельными компонентами может использоваться мышь или клавиатура. При нажатии на кнопку раскрывающегося списка появляется элемент управления Month Calender Control (Календарь на месяц), позволяющий выбирать новую дату для отображения в рассматриваемом элементе управления. При создании элемента управления для работы с датой и временем могут быть заданы следующие стили: "sectiontableheader"DTS_APPCANPARSE - позволяет пользователю нажать клавишу и произвести редактирование в рабочей области окна; "sectiontableheader"DTS_LONGDATEFORMAT - использует длинный формат представления даты; "sectiontableheader"DTS_RIGHTALIGN - приводит к выравниванию информации по правому краю в пределах элемента управления. По умолчанию используется выравнивание по левому краю; "sectiontableheader"DTS_SHORTDATEFORMAT - использует короткий формат представления даты; "sectiontableheader"DTS_TIMEFORMAT - выводит информацию о времени; "sectiontableheader"DTS_UPDOWN - помещает справа от данного элемента управления счетчик, который может использоваться для корректировки информации о дате и времени. В процессе своей работы данный элемент управления может посылать следующие извещения: "sectiontableheader"DTN_CLOSEUP - пользователь закрывает раскрывающийся месячный календарь; "sectiontableheader"DTN_DATETIMECHANGE - изменение информации в элементе управления; "sectiontableheader"DTN_DROPDOWN - пользователь открывает раскрывающийся месячный календарь; "sectiontableheader"DTN_USERSTRING - пользователь завершил редактирование строки в элементе управления; "sectiontableheader"DTN_KILLFOCUS - элемент управления потерял фокус ввода; "sectiontableheader"DTN_SETFOCUS - элемент управления получил фокус ввода. Описание данного класса содержится в файле заголовка afxdtctl.h. BOOL GetTime(COleDateTime& timeDest) const; DWORD GetTime(CTime& timeDest) const; DWORD GetTime(LPSYSTEMTIME pTimeDest) const; Возвращаемое значение В первой версии данной функции ненулевое значение возвращается в том случае, если информация о времени успешно записана в объект класса COleDateTime. В противном случае возвращается нулевое значение. Во второй и третьей версиях возвращается двойное слово, значение которого совпадает со значением переменной dwFlag структуры NMDATETIMECHANGE. Аргументы "sectiontableheader"timeDest - в первой версии данной функции содержит ссылку на объект класса COleDateTime, в который будет записана информация о системной дате и времени. Во второй версии данной функции этот аргумент содержит ссылку на объект класса CTime, в который будет записана информация о системной дате и времени. "sectiontableheader"PTimeDest - указатель на объект структуры SYSTEMTIME, в который будет записана информация о системной дате и времени. Не может принимать нулевого значения. Описание Используется для сохранения информации о дате и времени, содержащейся в соответствующем элементе управления, в объекте структуры SYSTEMTIME. Эта функция выполняет те же действия, что и сообщение Win32 DTM_GETSYSTEMTIME. При реализации в библиотеке MFC функция GetTime может сохранять информацию не только в объекте структуры SYSTEMTIME, но и в объектах классов COleDateTime и CTime. Вторая и третья версии данной функции возвращают двойное слово, информирующее о том, содержалась ли в соответствующем элементе управления информация о дате и времени. Возвращаемое значение соответствует значению переменной dwFlags структуры NMDATETIMECHANGE. Если возвращается значение GDT_NONE, то элемент управления не содержит информации о дате и использует стиль DTS_SHOWNONE. Если возвращается значение GDT_VALID, то системное время благополучно сохранено в соответствующем объекте. BOOL SetFormat(LPCTSTR pstrFormat); Возвращаемое значение Ненулевое, если функция завершилась успешно, и нулевое в противном случае. Содержимое элемента управления не определяет успешность завершения данной функции. Аргументы "sectiontableheader"pstrFormat - указатель на заканчивающуюся нулем строку, определяющую формат выводимой информации. Передача в данном аргументе нулевого значения установит формат, используемый по умолчанию. Описание Устанавливает формат вывода информации в элементе управления. Эта функция выполняет те же действия, что и сообщение Win32 DTM_SETFORMAT. BOOL SetTime(const COleDateTime& timeNew); BOOL SetTime(const CTime* pTimeNew); BOOL SetTime(LPSYSTEMTIME pTimeNew = NULL); Возвращаемое значение Ненулевое, если функция завершилась успешно, и нулевое в противном случае. Аргументы "sectiontableheader"timeNew - ссылка на объект класса COleDateTime, содержащий время, которое необходимо установить в элементе управления. "sectiontableheader"pTimeNew - во второй версии данной функции содержит указатель на объект класса CTime, содержащий время, которое необходимо установить в элементе управления. В третьей версии данной функции этот аргумент содержит указатель на объект структуры SYSTEMTIME, содержащий время, которое необходимо установить в элементе управления. Описание Устанавливает дату и время в соответствующем элементе управления. Эта функция выполняет те же действия, что и сообщение Win32 DTM_SETSYSTEMTIME. При реализации в библиотеке MFC функция GetTime может получать информацию не только из объекта структуры SYSTEMTIME, но и из объектов классов COleDateTime и CTime. Класс CDC представляет собой класс контекста устройств. Объект класса CDC содержит методы для работы с контекстом таких устройств, как дисплей или принтер, а также позволяет работать с контекстом дисплея, связанным с рабочей областью окна. Все операции вывода информации на дисплей и принтер должны производиться только с использованием методов, предоставляемых объектом класса CDC. Данный класс содержит методы для работы с контекстом устройств, осуществляющих вывод графической информации, методы выбора объектов интерфейса графических устройств (GDI), учитывающие тип выбираемых объектов, и методы для работы с цветами и палитрами. Он также обеспечивает методы для получения и установки атрибутов отображения графической информации, масштабирования, работы с областями просмотра, работы с расширениями окон, преобразования координат, работы с областями, отсечения неотображаемых фрагментов, рисования линий, простых форм, эллипсов и многоугольников. Данный класс содержит, также методы позволяющие выводить текст, работать со шрифтами, использовать управляющие последовательности принтера, прокрутку окон и проигрывание метафайлов. Чтобы использовать объект класса CDC, необходимо его создать, а затем использовать его функции, соответствующие функциям Windows, предназначенным для работы с контекстами устройств. В Windows 95 экранные координаты хранятся в 16-разрядных целых числах со знаком. Поэтому все величины типа int, используемые в качестве аргументов функций класса CDC должны находиться в диапазоне от -32768 до 32767. Для определенных целей в библиотеке MFC предусмотрены классы, производные от класса CDC. Класс CPaintDC включает в себя вызовы функций BeginPaint и EndPaint. Класс CClientDC позволяет работать с контекстом дисплея, связанным с рабочей областью окна. Класс CWindowDC позволяет работать с контекстом дисплея, связанным со всем окном, включая его рамку и элементы управления. Класс CMetaFileDC связывает контекст устройства с метафайлом. Класс CDC содержит две переменные для хранения контекста устройства: m_hDC и m_hAttribDC, которые, при создании объекта класса CDC относятся к одному и тому же устройству. Класс CDC направляет все запросы на вывод информации с использованием GDI к переменной m_hDC, а большинство обращений к атрибутам GDI использует переменную m_hAttribDC. (Примером обращения к атрибутам может служить функция GetTextColor, а функция SetTextColor может служить примером запроса на вывод информации). Например, приложение использует оба эти контекста устройства при работе с объектом класса CMetaFileDC, записывающего выходную информацию в метафайл, используя при этом атрибуты, считанные из контекста физического устройства. Данный режим используется приложением в режиме Предварительного просмотра печати. Может возникнуть случай, когда пользователю потребуется использовать одну и ту же информацию, полученную из обоих контекстов устройств. Для этого используются пары функций, приведенные в таблице П2.4: Таблица П2.4. Функции, выполняющие аналогичные действия с различными контекстами устройств Использует m_hAttribDC | Использует m_hDC | GetTextExtent | GetOutputTextExtent | GetTabbedTextExtent | GetOutputTabbedTextExtent | GetTextMetrics | GetOutputTextMetrics | GetCharWidth | GetOutputCharWidth | Описание данного класса содержится в файле заголовка afxwin.h. |