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

 

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

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

Янг Майкл Дж. Visual С++ 6. Полное руководство: В 2 т.(том2) — Бином, 2006. — 530 c.
Скачать (прямая ссылка): vicualcc2006t2.djvu
Предыдущая << 1 .. 142 143 144 145 146 147 < 148 > 149 150 151 152 153 154 .. 173 >> Следующая

}
1111111111111111111111111111111111111111111111111111111111111111111 11 Сериализация класса CServDemoDoc
void CServDemoDoc::Serialize(CArchives ar) {
if (ar.lsStoringO )
{
// TODO: здесь добавьте код сохранения m_LineArray.Serialize (ar);
)
else
{
// TODO: здесь добавьте код загузки m_LineArray.Serialize (ar) ;
)
11111111111111111111111111111111111111111111111111111111111111111111 II Диагностика класса CServDemoDoc
#ifdef _DEBUG
void CServDemoDoc::AssertValid() const (
COleServerDoc::AssertValid() ;
I
void CServDemoDoc::Dump(CDumpContexts dc) const {
COleServerDoc::Dump(dc);
)
#endif // DEBUG
///////////////////////////////////////////////////////////////////////
// другие функции класса CServDemoDoc
IMPLEMENT_SERIAL (CLine, CObject, 1)
void CLine::Draw (CDC *PDC) {
PDC->MoveTo (m_Xl, m_Yl); PDC->LineTo (m_X2, m_Y2); }
void CLine::Serialize (CArchiveS ar) {
if (ar.IsStoring())
ar « m_Xl « m_Yl « m_X2 « m_Y2; else
ar » m_Xl » m_Yl » m_X2 » m_Y2;
}
void CServDemoDoc::AddLine (int XI, int Yl, int X2, int Y2) {
CLine *PLine = new CLine (XI, Yl, X2, Y2); m_LineArray.Add (PLine); SetModifiedFlag (); }
CSize CServDemoDoc::GetDocSize ()
{
int XMax = 1, YMax = 1; int X, Y;
int Index = m_LineArray.GetSize (); while (Index—) {
X = m_LineArray.GetAt (Index)->GetMaxX (); XMax = X > XMax ? X : XMax; Y = m_LineArray.GetAt (Index)->GetMaxY (); YMax = Y > YMax ? Y : YMax;
}
return CSize(XMax, YMax); }
CLine *CServDemoDoc::GetLine (int Index) {
if (Index < 0 I I Index > m_LineArray.GetUpperBound ())
return 0; return m_LineArray.GetAt (Index); )
int CServDemoDoc: :GetNumLines ( ) {
return m_LineArray.GetSize (); }
void CServDemoDoc: :DeleteContents()
)
// TODO: Здесь добавьте собственный код обработчика // и/или вызов базового класса
int Index = m_LineArray.GetSize (); while (Index—)
delete m_LineArray.GetAt (Index); m_LineArray.RemoveAll ();
COleServerDoc: .-DeleteContents ()
}
void CServDemoDoc::OnEditClearAll()
(
// TODO: Здесь добавьте собственный код обработчика
DeleteContents (); UpdateAllViews (0); SetModifiedFlag ();
)
void CServDemoDoc::OnUpdateEditClearAll(CCmdUI* pCmdUI) 1
// TODO: Здесь добавьте собственный код обработчика pCmdUI->Enable (mjLineArray.GetSize ());
}
void CServDemoDoc::OnEditUndo()
{
// TODO: Здесь добавьте собственный код обработчика
int Index = m_LineArray.GetupperBound (); if (Index > -1) (
delete¦m_LineArray.GetAt (Index); m_LineArray.RemoveAt (Index); }
UpdateAllViews (0); SetModifiedFlag ();
void CServDemoDoc;:OnUpdateEditUndo(CCmdUI* pCmdUI) 1
// TODO: Здесь добавьте собственный код обработчика pCmdUI->Enable (m_LineArray.GetSize ());
}
Листинг 24.5.
// MainFrm.h : интерфейс класса CMainFrame
1111111II1111111111111II11! Ill 11IIIIII III IIIII111111111111111 i 111111111 #if !defined(
AFX_MAINFRM_H_03A2EC8A_ABBE_11D1_80FC_00C0F6A83B7F_INCLUDEDJ
#define AFX_MAINFRM_H_03A2EC8A_ABBE_llDl_80FC_00C0F6A83B7F__INCLUDED_
#if _MSC_VER > 1000 tpragma once
#endif // _MSC_VER > 1000
class CMainFrame : public CFrameWnd 1
protected: // используются при сериализации CMainFrame();
DECLARE_DYNCREATE(CMainFrame)
// Атрибуты public:
// Операции public:
// Переопределения
// Переопределения виртуальных функций, // сгенерированные мастером ClassWizard //{{AFX_VTRTUAL(CMainFrame)
virtual BOOL PreCreateWindow(CREATESTRUCT& cs) ; //} }AFX_VIRTUAL
// Реализация public:
virtual ~CMainFrame(); #ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const; #endif
// Сгенерированные функции схемы обработки сообщений protected:
//( {AFX__MSG (CMainFrame)
// ПРИМЕЧАНИЕ - Мастер ClassWizard будет добавлять // и удалять здесь функции-члены класса
//НЕ РЕДАКТИРУЙТЕ текст в этих блоках сгенерированного кода! //})AFX_MSG DECLARE_MESSAGE_MAP()
11111111111111111111111111111111111111/11////////1//1/////1111/11//1
II{{AFX_INSERT_LOCATION)}
// Visual С++ вставит дополнительные объявления // сразу перед предыдущей строкой
#endif
// !defined(
// AFX MAINFRM H 03A2EC8A ABBE 11D1 80FC 00C0F6A83B7F INCLUDED )
Листинг 24.6.
// MainFrm.cpp : реализация класса CMainFrame //
#include "stdafx.h" #include "ServDemo.h"
#include "MainFrm.h"
#ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE
static char THIS_FILE[] = _FILE_;
#endif
1111111111111111111111111111111111111111111111111111111111111111111111 II Класс CMainFrame
IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd) //{{AFX_MSG_MAP(CMainFrame)
// ПРИМЕЧАНИЕ - Мастер ClassWizard будет добавлять // и удалять здесь макросы обработки сообщений
//НЕ РЕДАКТИРУЙТЕ текст в этих блоках сгенерированного кода! //})AFX_MSG_MAP END_MESSAGE_MAP()
11111111111111111111111111111111111111111111111111111111111111111111111 11 Конструктор/деструктор класса CMainFrame
CMainFrame::CMainFrame() {
// TODO: здесь добавьте код инициализирующего элемента
)
CMainFrame::-CMainFrame()
{
1
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) {
Предыдущая << 1 .. 142 143 144 145 146 147 < 148 > 149 150 151 152 153 154 .. 173 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100