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

 

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

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

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

Отображение текста____
В этом параграфе мы создадим программу TextDemo, демонстрирующую отображение строк текста внутри окна представления. Программа TextDemo позволяет выбирать шрифт с помощью команды Font... меню Options, открывающей диалоговое окно Font, в котором можно выбрать имя шрифта (например, Courier), его стиль (например, bold), размер, эффекты (зачеркнутый или подчеркнутый), а также цвет текста. После установки всех свойств шрифта и закрытия диалогового окна Font, программа отобразит полную информацию о шрифте. Кроме того, будут отображены строки, содержащие эту информацию, с использованием описанных свойств шрифта. На рис. 18.1 показано диалоговое окно Font после установки свойств шрифта. На рис. 18.2 — окно программы TextDemo, отображаемое после закрытия диалогового окна Font щелчком на кнопке ОК.
Arial MT Black ft Arial Narrow Tfc Arial Rounded MT Bok :JJT Book Antiqua IT Bookman Old Style Zl
Ellects
Г* Strijseput
f~ Underline
'¦Color::' v;::Tv:
S ample
AaBbYyZz
IВ lack
чг|: i Sciipt:
] Western
Рис. 18.1. Диалоговое окно Font для установки свойств шрифта
ЩТех! Demo
Options Help
МЕЗ
FONT PROPERTIES Font Name. Arial Font Size: 10.0 points
LOGFONT fields: IfHeight: -13 IfWidth: 0
IfEscapement: 0 (tenths of a degree) IfOrientation: 0 (tenths of a degree) HWeight: 400 Ifltalic: 0 IfUnderline' 0 IfStrikeOut: 0
IfCharSet: ANSI_CHARSET
IfOutPrecision: OUT_STROKE_PRECIS
IfClipPrecision: CLIP J3TR0KE_PRECIS
IfQuality: DRAFT_QUALITY
IfPitchAndFamily: VARIABLE_PITCH; FF_SWISS
IfFaceName: Arial
TEXTMETRIC fields: tmHeight: 16 tmAscent: 13 tmDescent: 3 tmlnternalLeading: 3 tmExternalLeading: 0 tmAveCharWidtlr 6 tmMaxCharWidth: 14 tmWeight: 400 tmOverhang: 0
Рис. 18.2. Окно программы TextDemo после закрытия диалогового окна Font
Примечание
В гл. 21 показано, что основные методы, описанные в данной главе, можно использовать для отображения текста на печатаемой странице.
Генерация программы
Для генерации исходных файлов программы TextDemo используем мастер AppWizard по методике, рассмотренной в гл. 9. В диалоговом окне New Project Workspace в поле Name введите имя программы TextDemo, а в поле Location — имя каталога проекта. В диалоговых окнах мастера AppWizard (Step 1 — 6) задайте те же установки, что и в программе WinWizard в гл. 9, кроме диалогового окна мастера (Step 6), в котором необходимо выполнить следеющее:
1. Выберите в верхней части списка имя класса представления CTextDemoView.
2. В списке Base class выберите класс CScrollView.
Составление
фрагмента программы отображения строк
Первое действие по настройке программы TextDemo — это написание кода для отображения текста в окне представления. Обычно этот текст сохраняется в классе документа (позже вы увидите, как это делается) и отображается функцией OnDraw класса представления.
Перед добавлением кода в функцию OnDraw откройте файл TextDemoView.h и введите следующее определение константы MARGIN, хранящей значение ширины поля между текстом и верхней границей, а также между текстом и левой границей окна представления.
const int MARGIN = 10; // поле, отображенное в левом верхнем
// углу окна представления
class CTextDemoView : public CScrollView
(
Откройте файл TextDemoView.cpp и добавьте код для отображения текста функцией OnDraw:
/////////////////////////////////////////////////////////////////
// Отображение данных класса CTextDemoView
void CTextDemoView::OnDraw(CDC* pDC) {
CTextDemoDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc);
// TODO: Здесь добавьте код отображения собственных данных
// возврат, если шрифт не создан: if (pDoc->m_Font.m_hObject == NULL) return;
RECT ClipRect; int LineHeight; TEXTMETRIC TM; int Y = MARGIN;
// выбор шрифта в объекте контекста устройства: pDC->SelectObject (SpDoc->jn_Font);
// получение метрики текста: pDC->GetTextMetrics (6ТМ);
LineHeight = TM.tmHeight + TM.tmExternalLeading;
// установка атрибутов текста: pDC->SetTextColor (pDoc->m_Color); pDC->SetB)cMode (TRANSPARENT) ;
// получение координат недействительной области: pDC->GetClipBox (SClipRect);
// отображение строки заголовка: pDC->TextOut (MARGIN, Y, "FONT PROPERTIES");
// отображение строк текста:
for (int Line = 0; Line < NUMLINES; ++Line) {
Y += LineHeight;
if (Y + LineHeight >= ClipRect.top SS Y <= ClipRect.bottom) pDC->TextOut (MARGIN, Y, pDoc->m_LineTable [Line]);
}
)
Фрагмент, добавленный в функцию OnDraw, иллюстрирует основные этапы отображения текста внутри окна представления, которые можно описать следующим образом.
1. Если фрагмент программы, выполняющий отображение окна, отличен от функции OnDraw, необходимо получить объект контекста устройства для окна представления. (В добавленном коде это не используется.)
2. Выберите шрифт, если не хотите использовать стандартный шрифт System.
3. Если необходимо, определите размеры текста.
4. Установите желаемые атрибуты текста.
5. Если текст отображается функцией OnDraw, получите размеры недействительной области окна представления (т. е. части окна, отмеченной для обновления).
Предыдущая << 1 .. 26 27 28 29 30 31 < 32 > 33 34 35 36 37 38 .. 173 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100