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

 

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

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

Янг Майкл Дж. Visual С++ 6. Полное руководство: В 2 т.(том1) — Бином, 2006. — 569 c.
Скачать (прямая ссылка): vicualcc2006t1.djvu
Предыдущая << 1 .. 159 160 161 162 163 164 < 165 > 166 167 168 169 170 171 .. 204 >> Следующая

Получая управление, функция OnDraw перерисовывает строки текста в окне представления, используя новые параметры форматирования, сохраненные в объекте документа. Откройте файл FontDemoView.cpp и добавьте оператор include для включения файла заголовков Format.h, чтобы можно было использовать константы с номерами переключателей и соответствующие стили.
// FontDemoView.cpp : реализация класса CFontDemoView //
#include "stdafx.h" #include "FontDemo.h"
#include "FontDemoDoc.h" #include "FontDemoView.h" ¦include "format.h"
Затем добавьте код для перерисовки строк в функцию OnDraw.
/////////////////////////////////////////////////////////////// // Отображение окна класса CFontDemoView
void CFontDemoView::OnDraw(CDC* pDC)
{
CFontDemoDoc* pDoc = GetDocument (); ASSERT_VALID(pDoc) ;
// TODO: Здесь добавьте код для отображения собственных данных
RECT ClientRect; CFont Font; LOGFONT LF; int LineHeight; CFont *Ptr01dFont; int X, Y;
// заполнение структуры LF свойствами // стандартного системного шрифта: CFont TempFont;
if (pDoc->m_Pitch == PITCHJVARIABLE)
TempFont. CreatestoclcObject (SYSTEM_FONT) ; else
TempFont.CreatestockObject (SYSTEM_FIXED_FONT); TempFont.GetObject (sizeof (LOGFONT), &LF);
// теперь инициализируем поля lfWeight, IfItalic и lfUnderline: if (pDoc->m_Bold)
LF.lfWeight = FW_BOLD; if (pDoc->m_Italic)
LF.IfItalic = 1; if (pDoc->m_Underline)
LF.lfUnderline = 1;
// создание и выбор шрифта: Font.CreateFontlndirect (&LF); PtrOldFont = pDC->SelectObject (6Font);
// установка выравнивания: GetClientRect (SClientRact); switch (pDoc->m_Justify) {
case JUSTIFY_LEFT:
pDC->SetTextAlign (TA_LEFT);
X = ClientRect.left + 5;
break; case JUSTIFY_CENTER:
pDC->SetTextAlign (TA_CENTER);
X = ClientRect.right / 2;
break; case JUSTIFY_RIGHT:
pDC->SetTextAlign (TA_RIGHT);
X = ClientRect.right - 5;
break;
)
// установка цвета текста и режима фона: pDC->SetTextColor (::GetSysColor (COLOR_WIND0WTEXT)); pDC->SetBkMode (TRANSPARENT);
// вывод строк текста:
LineHeight = LF.lfHeight * pDoc->m_Spacing;
Y = 5;
pDC->TextOut (X, Y, "This is the first line of sample text.");
Y += LineHeight;
pDC->TextOut (X, Y, "This is the second line of sample text.");
Y += LineHeight;
pDC->TextOut (X, Y, "This is the third line of sample text.");
// отмена выбора шрифта: pDC->SelectObject (PtrOldFont);
}
Этот код напоминает код, добавленный в функцию OnPaint класса диалогового окна. Заметьте: вместо простого вывода текста с использованием стандартного черного цвета мы вызываем функции ::GetSysColor и CDC::SetTextColor, устанавливающие цвет текста Window Font, выбранный в программе Display в панели управления Windows (MFC автоматически устанавливает цвет фона окна, используя установки программы Display).
Изменение заголовка программы
Программа FontDemo написана так, что MFC отображает в ее строке заголовка текст "Untitled — FontDemo", позволяющий сделать ошибочный вывод о том, что программа создает документы. Чтобы установить более подходящий заголовок, добавьте вызов функции CWnd: :SetWindowText в конец функции Initlnstance в файле FontDemo.срр.
// Единственное окно приложения отображается и обновляется m_pMainWnd->ShowWindow(SW_SHOW); m_pMainWnd->UpdateWindow();
m_pMainWnd->SetWindowText ("System Font Demo") ;
return TRUE;
}
Переменная m_pMainWnd — это указатель на объект главного окна. Обращение к функции SetWindowText должно находиться после обращения к функции ProcessSheilCommand, создающей главное окно.
Программа FontDemo завершена, теперь можете построить и запустить ее.
Исходный текст программы FontDemo
В листингах 15.1 — 15.10 приведен текст программы FontDemo. Исходные файлы этой программы находятся в каталоге \FontDemo прилагаемого компакт-диска.
Листинг 15.1
// FontDemo.h : главный файл заголовков приложения FONTDEMO //
#if !defined(
AFX_FONTDEMO_H_180B6FC5_9FFD_11D1_80FC_00C0F6A83B7F_INCLUDEDJ
#define
AFX_FONTDEMO_H_180B6FC5_9FFD_11D1_80FC_00C0F6A83B7F_INCLUDED_
#if _MSC_VER > 1000 #pragma once
#endif // _MSC_VER > 1000
#ifndef _AFXWIN_H_
#error include 'stdafx.h' before including this file for PCH #endif
#include "resource.h" // основные символические константы
1111111 п 11111111111111111111111111111111111111111//111 m /1 m
ii Класс CFontDemoApp:
// Смотрите реализацию этого класса в файле FontDemo.срр
//
class CFontDemoApp : public CWinApp
t
public:
CFontDemoApp();
// Переопределения
// Переопределения виртуальных функций, сгенерированные
// мастером ClassWizard
//{{AFX_VIRTUAL(CFontDemoApp)
public:
virtual BOOL Initlnstance (); //}}AFX_VIRTUAL
// Реализация
//{{AFX_MSG(CFontDemoApp)
afx_msg void OnAppAbout();
// ПРИМЕЧАНИЕ - Мастер ClassWizard будет добавлять
// и удалять здесь функции-члены класса
// НЕ РЕДАКТИРУЙТЕ текст в этих блоках сгенерированного кода!
II)}AFX_MSG
DECLARE_MESSAGE_MAP()
};
1111111111111111111111111111111111111111111111111111 /1111111111
11 {{AFX_INSERT_LOCATION}}
// Visual С++ вставит дополнительные объявления // сразу перед предыдущей строкой
Предыдущая << 1 .. 159 160 161 162 163 164 < 165 > 166 167 168 169 170 171 .. 204 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100