Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Янг Майкл Дж. -> "Visual С++ 6. Полное руководство: В 2 т.(том2)" -> 35

Visual С++ 6. Полное руководство: В 2 т.(том2) - Янг Майкл Дж.

Янг Майкл Дж. Visual С++ 6. Полное руководство: В 2 т.(том2) — Бином, 2006. — 530 c.
Скачать (прямая ссылка): vicualcc2006t2.djvu
Предыдущая << 1 .. 29 30 31 32 33 34 < 35 > 36 37 38 39 40 41 .. 173 >> Следующая

Теперь сохраните изменения, сделанные в программных ресурсах, и закройте редакторы ресурсов. Запустите мастер С1а$5У/'магд для издания обработчика
команды Font, добавленной в меню TextDemo. В диалоговом окне мастера ClassWizard откройте вкладку Massage Maps, затем выберите класс CTextDemoDoc из списка Class name и пункт id_options_font из списка Object IDs (идентификатор команды меню Font). В списке сообщений Messages выберите сообщение command, щелкните на кнопке Add Function... и примите стандартное имя функции OnOpt ions Font.
Перед реализацией функции OnOptionsFont необходимо открыть файл заголовков TextDemoDoc.h и определить некоторые новые переменные. В начале файла определите константу NUMLINES, содержащую число отображаемых строк текста без учета строки заголовка.
const int NUMLINES = 42; // количество строк, сохраненных
//в документе и отображенных в // окне представления
class CTextDemoDoc : public CDocument {
Добавьте определения новых переменных в начало определения класса
CTextDemoDoc.
class CTextDemoDoc : public CDocument
{
public
COLORREF m_Color;
CString m_LineTable [NUMLINES] ;
CFont m_Font;
Переменная mColor сохраняет цвет текста, выбранный в диалоговом окне Font, a mLineTable содержит массив объектов CString, используемый для хранения строк текста, отображенного в окне представления. Переменная mFont MFC-класса CFont содержит объект шрифта, используемый для установки шрифта текста.
Откройте файл TextDemoDoc.cpp и добавьте следующий фрагмент в сгенерированную функцию OnOptionsFont.
void CTextDemoDoc::OnOptionsFont() {
// TODO: здесь добавьте код обработки команды
// отображение диалогового окна Font: CFontDialog FontDialog; if (FontDialog.DoModal () != IDOK) return;
// установка m_Color:
m_Color = FontDialog.GetColor () ; // получение цвета,
// выбранного пользователем
// инициализация объекта шрифта: mJFont.DeleteObJect ();
m_Font.CreateFontlndirect (SFontDialog.m_lf); // сохранение значений в m_LineTable:
// сохранение значений, выбранных пользователем:
int Num = 0;
m_LineTable [Num++] = "Font Name: " + FontDialog.GetFaceName
m_LineTable [Num] = "Font Size: ";
char NumBuf [18];
sprintf
(NumBuf ,"%d.%d points",
FontDialog.GetSize () / 10,
FontDialog.GetSize () % 10) ; m_LineTable [Num++] += NumBuf;
m_LineTable [Num++] = " ";
// сохранение значений LOGFONT:
m_LineTable [Num++] = "LOGFONT fields:";
m_LineTable [Num] = "lfHeight: ";
sprintf (NumBuf, "%d", FontDialog. m_lf. lfHeight) ;
m_LineTable [Num++] += NumBuf;
m_LineTable [Num] = "lfWidth: ";
sprintf (NumBuf ,"%d", FontDialog.m_lf . lfWidth) ;
m_LineTable [Num++] += NumBuf;
m_LineTable [Num] = "lfEscapement: ";
sprintf (NumBuf,"%d",FontDialog.m_lf.lfEscapement);
m_LineTable [Num] += NumBuf;
m_LineTable [Num++] += " (tenths of a degree)";
m_LineTable [Num] = "IfOrientation: ";
sprintf (NumBuf,"%d" , FontDialog.m_lf.IfOrientation);
m_LineTable [Num] += NumBuf;
m_LineTable [Num++] += " (tenths of a degree)";
m_LineTable [Num] = "lfWeight: ";
sprintf (NumBuf, "%d" , FontDialog.m_lf. lfWeight) ;
m_LineTable [Num++] += NumBuf;
m_LineTable [Num] = "IfItalic: ";
sprintf (NumBuf,"%d", FontDialog.m_lf.IfItalic);
m LineTable [Num++] += NumBuf;
m_LineTable [Num] = "lfUnderline: ";
sprintf (NumBuf,"%d", FontDialog.m_lf.lfUnderline); m_LineTable [Num++] += NumBuf;
m_LineTable [Num] = "IfstrikeOut: ";
sprintf (NumBuf,"%d", FontDialog.m_lf.IfStrikeOut);
m_LineTable [Num++] += NumBuf;
m_LineTable [Num] = "lfCharSet: "; switch (FontDialog.m_lf.lfCharSet) {
case ANSI_CHARSET:
m_LineTable [Num++] += "ANSI_CHARSET"; break;
case OEM_CHARSET:
m_LineTable [Num++] += "OEM_CHARSET"; break;
case SYMBOL_CHARSET:
m_LineTable [Num++] += "SYMBOL_CHARSET"; break;
default:
m_IiineTable [Num++] += "unspecified character set"; break;
}
m_LineTable [Num] = "IfOutPrecision: "; switch (FontDialog.m_lf.lfOutPrecision) {
case OUT_CHARACTER_PRECIS:
mJLineTable [Num++] += "OUT_CHARACTER_PRECIS"; break;
case OUT_DEFAULT_PRECIS:
m_LineTable [Num++] += "OUT_DEFAULT_PRECIS"; break;
case OUT_STRTNG_PRECIS:
m_LineTable [Num++] += "OUT_STRING_PRECIS"; break;
case OUT_STROKE_PRECIS:
m_LineTable [Num++] += "OUT_STROKE_PRECIS"; break;
default:
m_LineTable [Num++] += "unspecified output precision"; break;
}
m_LineTable [Num] = "lfClipPrecision: "; switch (FontDialog.m_lf.lfClipPrecision) {
case CLIP_CHARACTER_PRECIS:
m_LineTable [Num++] += "CLIP_CHARACTER_PRECIS"; break;
case CLIP_DEFAULT_PRECIS:
m_LineTable [Num++] += "CLIP_DEFAULT_PRECIS" ; break;
case CLIP_STROKE_PRECIS:
m_LineTable [Num++] += "CLIP_STROKE_PRECIS"; break;
default:
m_LineTable [Num++] += "unspecified clipping precision"; break;
}
m_LineTable [Num] = "IfQuality: "; switch (FontDialog.m_lf.IfQuality) (
case DEFAULT_QUALITY:
m_LineTable [Num++] += "DEFAULT_QUALITY"; break;
case DRAFT_QUALITY:
m_LineTable [Num++] += "DRAFT_QUALITY"; break;
case PROOF_QUALITY:
Предыдущая << 1 .. 29 30 31 32 33 34 < 35 > 36 37 38 39 40 41 .. 173 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100