Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпоры по Леонову, 5семестр.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
503.3 Кб
Скачать

36. Работа со стандартными диалогами.

Д.о. –диалоговое окно

Стандартные диалоги применяются для выполнения тех или иных стан. действий. Эти диалоги поддерживают и MFS-классы. Все классы стандартных диалоговых окон являются производными от одного базового класса CCommonDialog

CcommonDialog:: CcommonDialog (CWnd*pParentWnd) – если пар. pParentWnd равен NULL, то род. окном блока диалога будет глав. окно приложения.

У всех стандартых диалогов есть общее св-во они собирают инфу от пользователя, но ничего с ней не делают.

Класс CFileDialog

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

Конструктор класса, создает объект “стандартный диалог”:

CFileDialog :: CFileDialog (BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR IpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY / OFN_OVERWRITERROMPT, LPCTSTR lpsz Filter = NULL, CWnd*pParentWnd = NULL)

-// если пар. bOpenFileDialog равен TRUE, создается объект “диалог File Open” и объект “диалог File Save As”, если bOpenFileDialog равен FALSE; lpszDefExt – указатель на буфер, кот. содержит расширение имени файла, исп. по умолчанию; IpszFile –узывает на буфер, кот. содержит имя файла(или путь), используемое по умол. при инициализации эл. упр. File Name; lpsz Filter- опред. указ. на буфер, содер. одну или больше пар текстовых строк, зад. фильтры для выбора имен файлов; OFN_HIDEREADONLY – предписывает убрать из блока диалога флажок Read Only; OFN_OVERWRITERROMPT – предписывает блоку диалога Save As выводить окно запроса на перезапись, если выбранный файл уже существует.

Для того чтобы получить имя файла, определ. пользоват. в диалоге, в классе реализованы неск. фун-ий:

virtual CString CFileDialog :: GetPathName() - // возвращ. полное имя файла, включая путь

virtual CString CFileDialog :: GetFileName() - // возвращ. имя файла с расширением

virtual CString CFileDialog :: GetPathExt() - // возвращ. расширение имени файла

virtual CString CFileDialog :: GetFileTitle() - // возвращ. имя файла без расширения

void CFileDialog:: OnFileNameOK ()- // фиксирует имя файла, введенное в диалоге

void CFileDialog:: OnLBSelChangedNofity () - // вызывается, когда измен. выбор в поле списка

POSITION CFileDialog:: GetStartPosition () - // возвращ. позицию первого имени файла в списке, если для диалога разрешен множественный выбор, или NULL, если список пуст.

BOOL CFileDialog:: GetReadOnlyPref () - //позволяет определить, был ли установлен (TRUE) флажок Read Only в диалоге.

Класс CColorDialog

Отвечает за создание модального диалогового окна для выбора и/или создания цветов, кот. определены для вашего дисплея.

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

Конструтор объекта “д.о. ”:

CСolorDialog :: CColorDialog( COLORREF clrInit = 0, DWORD dwFlags = 0, CWnd*pParentWnd=NULL) - // пар. clrInit определяет первоначально выбранный цвет в формате RGB.

Virtual int CcolorDailog :: DoModal ()- выводит на экран мод. стандарт. д.о. Windows для выбора цвета.

COLORREF CColorDialog :: GetColor ()- //позволяет получить инфу о цвете выбранном пользователем. Выз. после заверш. работы фу-ции CColorDailog :: DoModal

Static COLORREF* CColorDailog ::GetSavedCustomColors () - // возвращ. указ. на массив содер. 16 доплнит. цветов, созданных пользоват.

Класс CFontDialog

Этот класс позволяет создать станд. мод. д.о., предназначенное для выбора одного из зарегистрированных в системе шрифтов, а также его стиля, размера, цвета т.д.

За внешний вид станд. д.о., созд. на основе этого класса отвечает структура типа CHOOSFONT. Она служит для настройки внешнего вида стан. д.о.

Основные фу-ции класса:

virtual int CFontDialog ::DoModal () -//выводит на экр. стан. д.о. для выбора шрифта.

void int CFontDialog :: GetCurrentFont (LPLOGFONT lplf) -// заполняет поля структуры LOGFONT характеристиками текущего выбранного шрифта.

CString CFontDialog :: GetFaceName () -//позволяет получить имя выбранного шрифта

CString CFontDialog :: GetStyleName() - // позволяет получить стиль выбранного шрифта

int CFontDialog :: GetSize() - //позволяет получить размер выб. шрифта

COLORREF CFontDialog :: GetColor() -// позволяет получить шрифт выбранного шрифта

BOOL CFontDialog :: IsStrikeOut() -// опред. будет ли выбран. шрифт зачеркнутым

BOOL CFontDialog :: IsUnderLine() -// опред. будет ли выбран. шрифт подчеркнутым

BOOL CFontDialog :: IsItalic() -// опред. будет ли выбран. шрифт наклонным

Класс CFindReplaceDialog

Этот класс отвечает за создание двух немод. д.о.:Find() для поиска строк и Find/Replace (найти/заменить) для поиска и/или замены.

CFindReplaceDialog :: CfindReplaceDialog()- // конструктор класса, кот. как и другие немодал. д.о. , необходимо создавать динамически

BOOL CFindReplaceDialog::Create (

BOOL bFindDialogOnly,

LPCTSTR lpszFindWhat,

LPCTSTR lpszReplaceWith = NULL,

DWORD dwFlags = FR_DOWN,

CWnd *pParentWnd = NULL ) - // создает объект станд. д.о. Если пар. bFindDialogOnly равен TRUE, создается объект “д.о. Find”, в прот. случае – объект “д.о. Find/Replace ”;

lpstr FindWhat – указывает на буфер, кот. содержит строку, введенную пользователем в поле

FindWhat (что).

lpstr ReplaceWith – указывает на буфер, кот. содержит строку, введен. пользователем в поле ReplaceWith (заменить на).

FR_DOWN - при инициализации д.о. переключатель направления поиска устанавливается в положение Down (вниз),определяя, что поиск будет осущ. от положения курсора до конца документа. Иначе переключ. устан. в полож. Up. -//

CString CFindReplaceDialog :: GetFindString() - // возвращ. заданную о умолчанию строку для поиска

CString CFindReplaceDialog :: GetReplaceString() - //возвращ. заданную по умол. строку, на кот. будут заменятся найденные строки

BOOL CFindReplaceDialog :: MatchWholeWord() - //позволяет определить, хочет ли пользователь осуществить поиск слова целиком, или только его части.

BOOL CFindReplaceDialog :: RaplaceAll() - //позволяет определить, хочет ли пользователь осуществлять автоматическую замену всех найденных строк.

BOOL CFindReplaceDialog :: RaplaceCurrent() - // позволяет определить, хочет ли пользователь заменить найденную строку.

BOOL CFindReplaceDialog ::SearchDown() -// позволяет определить направление поиска. Возвращ. TRUE, поиск осущ. к концу документа; в противном случае – к началу.

Класс CPrintDialog

Этот класс отвечает за создание двух модальных д.о. : Print (печать) и PrintSetup (настройка печати), с помощью которых поль-тель может напечатать документ, выбрать нужный принтер или изменить его параметры.

Настройка объекта осущ. с помощью структуры типа PRINTDLG. Она служит для настройки внешнего вида д.о.

А чтобы иметь представление об установках, необходимых для настройки принтера исп. структуры DEVMODE и DEVNAMES.

Структура DEVNAMES содержит имена драйвера, принтера, и порта вывода, к кот. подключен принтер:

Typedef struct tag DEVNAMES {

WORD wDriverOffset;

WORD wDeviceOffset;

WORD wOutputOffset;

WORD wDefaultl;

} DEVNAMES; -// первые три поля содердат смещения текстовых строк с именами драйвера, принтера и порта вывода. Строки располагаются в памяти непосредственно за этой структурой. Поле wDefault определяет, опис. ли предыдущие поля принтер.

Основные фу-ции класса:

CPrintDialog:: CPrintDialog () – конструктор объекта для станд. мод. д.о. Windows.

virtual int CPrintDialog::DoModal() -// выводит на экран мод. стандарт. д.о. печати

HDC CPrintDialog:: CreatePrinterDC() - //создает и делает текущий контекст устро-ва принтера на базе структур DEVMODE и DEVNAMES.

BOOL CPrintDialog::GetPrinterDC() - // позволяет получить параметры установленного по умол. принтера без открытия д.о.

CString CPrintDialog::GetDeviceName() - // вызывается после DoModal и возвращ. имя текущего выбранного принтера

CString CPrintDialog::GetDriverName() - // вызывается после DoModal и возвращ. имя драйвера тек. выбранного принтера

CString CPrintDialog::GetPortName() - // вызывается после DoModal и возвращ. имя порта вывода тек. выб. принтера.

int CString CPrintDialog:: GetCopies () -// вызывается после DoModal и возврщ. затреб. число копий, кот. нужно напачатать

int CString CPrintDialog:: GetFromPage () -// вызывается после DoModal и возврщ. номер последней печатаемой страницы

int CString CPrintDialog:: GetToPage () -// вызывается после DoModal и возврщ. номер последней печатаемой страницы.

Класс CPageSetupDialog

Этот класс отвечает за создание и функционирования станд. мод. д.о. Windows Page Setup (параметры страницы) с доп. поддержкой установки и модификацией полей печати.

Настройка объекта этого класса осуществляется с помощью структуры типа PAGESETUPDLG.

Основные фу-ции класса.

virtual int CPageSetupDialog::DoModal () - // выводит на экран мод. станд. д.о. для настройки полей, размеров и ориентации страницы, а также параметров принтера.

void CpageSetupDialog:: GetMargins (LPRECT lpRectMargins, LPRECRT lpRectMinMargins) –

// выз. После DoModal и возвращ. значения размеров полей печати текущего выбранного принтера. Если какой-либо пар. нам не нужен- ставим NULL.

Csize CPageSetupDialog :: GetPaperSize () - // выз. После DoModal и возв. Размер бумаги, выб. для тек. принтера.

virtual UINT CPageSetupDialog ::OnDrawPage (CDC *pDC,UINT nMessage,LPRECT lpRect)

-// вызывается фреймом и рисует экранный образ страница печати, кот. затем отображается в д.о. Page Setup (пар. страницы); pDC –указ. на контекст устрой-ва принтера; lpRect- указ. на объект Crect или RECT, содержащей координаты перерисовывания области; nMessage – сообщение определяющее область выводимой страницы. Параметр nMessage может принимать одно из след. значений:

WM_PSD_FULLPAGERECT страница целиком

WM_PSD_MARGINRECT область, ограниченная текущими полями

WM_PSD_GREEKTEXTRECT содержание страницы