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

 

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

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

Янг Майкл Дж. Visual С++ 6. Полное руководство: В 2 т.(том2) — Бином, 2006. — 530 c.
Скачать (прямая ссылка): vicualcc2006t2.djvu
Предыдущая << 1 .. 102 103 104 105 106 107 < 108 > 109 110 111 112 113 114 .. 173 >> Следующая

#endif
/'/ ! defined (
// AFX MINIDRAWD0C_H_11E8392A 999A 11D1 80FC 00C0F6A83B7F INCLUDED )
Листинг 21.4.
// MiniDrawDoc.срр : реализация класса CMiniDrawDoc //
#include "stdafx.h" #include "MiniDraw.h"
¦include "MiniDrawDoc.h"
#ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE
static char THIS_FILE[] = _FILE_;
#endif
1111111111111111/111111111111111111111111111111111111/111III/111111II11
I Класс CMiniDrawDoc
IMPLEMENT_DYNCREATE(CMiniDrawDoc, CDocument)
BEGIN_MESSAGE_MAP(CMiniDrawDoc, CDocument) III{AFX_MSG_MAP(CMiniDrawDoc) ON_COMMAND(ID_EDIT_CLEAR_ALL, OnEditClearAll)
ON_UPDATE_COMMAND_UI(ID_EDIT_CLEAR_ALL, OnUpdateEditClearAll) ON_COMMAND(ID_EDIT_UNDO, OnEditUndo)
ON_UPDATE_COMMAND_UI(ID_EDIT_UNDO, OnUpdateEditUndo) //}}AFX_MSG_MAP EN D_ME S SAGE_MAP()
111111111111111111111111111111111111111111111111111111111111111111111
II Конструктор/деструктор класса CMiniDrawDoc
CMiniDrawDoc::CMiniDrawDoc() {
// TODO: Здесь добавьте код конструктора
}
CMiniDrawDoc::-CMiniDrawDoc()
(
}
BOOL CMiniDrawDoc::OnNewDocument() {
if (!CDocument::OnNewDocument()) return FALSE;
// TODO: Здесь добавьте код повторной инициализации
// (SDI-приложения будут повторно использовать этот документ)
return TRUE;
}
1111111111111111111111111111111111111111111111111 III 1111
II сериализация класса CMiniDrawDoc
void CMiniDrawDoc::Serialize(CArchive& ar) {
if (ar.IsStoring()) (
// TODO: здесь добавьте код сохранения m_FigArray.Serialize (ar);
}
else
(
// TODO: здесь добавьте код загрузки m_FigArray.Serialize (ar);
)
111111111111111111111111111111111111111111111111111111111 II диагностика класса CMiniDrawDoc
#ifdef _DEBUG
void CMiniDrawDoc::AssertValid() const (
CDocument::AssertValid();
)
void CMiniDrawDoc::Dump(CDumpContextS dc) const {¦
CDocument: : Dump(dc);
}
#endif //_DEBUG
111111111111111111111111111111111111111111111111111111111 II Другие функции класса CMiniDrawDoc
void CMiniDrawDoc : .-AddFigure (CFigure *PFigure) (
m_FigArray.Add (PFigure);
SetModifiedFlag ();
}
CFigure *CMiniDrawDoc::GetFigure (int Index) {
if (Index < О M Index > m_FigArray.GetUpperBound ()) return 0;
return (CFigure *)m_FigArray.GetAt (Index);
}
int CMiniDrawDoc::GetNumFigs () {
return m_FigArray.GetSize (); )
void CMiniDrawDoc::DeleteContents() {
// TODO: Здесь добавьте собственный код обработчика // и/или вызов базового класса
int Index = m_FigArray.GetSize (); while (Index—)
delete m_FigArray.GetAt (Index); m_FigArray. RemoveA.ll ();
CDocument: :DeleteContents( ) ;
void CMiniDrawDoc::OnEditClearAll() (
// TODO: Здесь добавьте собственный код обработчика
DeleteContents (); UpdateAllViews (0); SetModifiedFlag ();
void CMiniDrawDoc::OnUpdateEditCiearAl1(CCmdUI* pCmdUI) {
// TODO: Здесь добавьте собственный код обработчика pCmdUI->Enable (m_FigArray.GetSize ());
}
void CMiniDrawDoc::OnEditUndo() {
// TODO: Здесь добавьте собственный код обработчика
int Index = m_FigArray.GetGpper?ound О; if (Index > -1) {
delete m_FigArray.GetAt (Index); m_FigArray.RemoveAt (Index); 1
UpdateAllViews (0); SetModifiedFlag ();
}
void CMiniDrawDoc::OnUpdateEditUndo(CCmdUI* pCmdUI) {
// TODO: Здесь добавьте собственный код обработчика pCmdUI->Enable (m_FigArray.GetSize ());
}
// Реализация классов фигур:
IMPLEMENT_SERIAL (CFigure, CObject, 3)
CRect CFigure::GetDimRect ()
f
return CRect
(min (m_Xl, m_X2), min (m_Yl, m_Y2), max (m_Xl, m_X2) + 1, max (m_Yl, m_Y2) + 1);
}
void CFigure::Serialize (CArchivei ar) {
if (ar.IsStoring ())
ar « m_Xl « m_Yl « m_X2 « m_Y2 « m_Color;
else
ar » m_Xl » m_Yl » m_X2 » m_Y2 » m_Color;
)
IMPLEMENT_SERIAL (CLine, CFigure, 3)
CLine::CLine (int XI, int Yl, int X2, int Y2, COLORREF Color, int Thickness) {
m_Xl = XI;
mJYl = Yl;
m_X2 = X2;
m_Y2 = Y2;
m Color = Color;
m_Thickness = Thickness;
}
void CLine::Serialize (CArchiveS ar) I
CFigure::Serialize (ar); if (ar.IsStoring ()) ar « m_Thickness;
else
ar >> m_Thickness;
i
void CLine::Draw (CDC *PDC) (
CPen Pen, *P01dPen;
// выберите перо/кисть:
Pen.CreatePen (PS_SOLID, m_Thickness, m_Color); POldPen = PDC->SelectObject (&Pen); ,
II рисуйте фигуру: PDC->MoveTo (m_Xl, m_Yl); PDC->LineTo (m_X2, mY2);
// уберите перо/кисть: PDC->SelectObject (POldPen); )
IMPLEMENT_SERIAL (CRectangle, CFigure, 3)
CRectangle::CRectangle (int XI, int Yl, int X2, int Y2, COLORREF Color, int Thickness) {
m XI = XI
m ~Y1 = Yl
m ~X2 = X2
m ~Y2 = Y2
m_Color = Color; mjThickness = Thickness; }
void CRectangle::Serialize (CArchives ar) {
CFigure::Serialize (ar); if (ar.IsStoring ())
ar << mjThickness; else
ar » mjThickness;
}
void CRectangle::Draw (CDC *PDC) {
CPen Pen, *P01dPen; // выберите перо/кисть
Pen.CreatePen (PS_INSIDEFRAME, m_Thickness, m_Color); POldPen = PDC->SelectObject (&Pen); PDC->SelectStockObject (NULL_BRUSH) ;
// рисуйте фигуру:
PDC->Rectangle (m_Xl, m_Yl, m_X2, m_Y2);
// удалите перо/кисть: PDC->SelectObject (POldPen); }
IMPLEMENT_SERIAL (CRectFill, CFigure, 3)
Предыдущая << 1 .. 102 103 104 105 106 107 < 108 > 109 110 111 112 113 114 .. 173 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100