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

 

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

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

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

// MiniDrawView.срр : реализация класса CMiniDrawView //
tinclude "stdafx.h" #include "MiniDraw.h"
¦include "MiniDrawDoc.h" #include "MiniDrawView.h"
#ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE
static char THIS_FILE[] = _FILE_;
#endif
II111IIII1111111111111111111111111II111111111111111111111111111 III 111 II Класс CMiniDrawView
IMPLEMENT_DYNCREATE(CMiniDrawView, CScrollView)
BEGIN_MESSAGE_MAP(CMiniDrawView, CScrollView) //{(AFX_MSG_MAP(CMiniDrawView) ON_WM_LBUTTONDOWN() ON_WM_MOUSEMOVE() ON_WM_LBUTTONUP() //}}AFX_MSG_MAP
ON_COMMAND(ID_FILE_PRINT, CView: -.OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview) EN D_ME S SAGE_MAP()
11 и 1111 /11 /1111111111 и 11111 i-i 111111 и 1111111 /1111 in ш 11 m /1 ii m
II Конструктор/деструктор класса CMiniDrawView
CMiniDrawView::CMiniDrawView() {
// TODO: Здесь добавьте код конструктора m_Dragging = 0;
m_HArrow = AfxGetApp ()->LoadStandardCursor (IDC_ARROW); m_HCross = AfxGetApp ()->LoadStandardCursor (IDC_CROSS); m_PenDotted.CreatePen (PS_DOT, 1, RGB (0,0,0));
}
CMiniDrawView::-CMiniDrawView()
( \
BOOL CMiniDrawView::PreCreateWindow(CREATESTRUCT& cs)
(
// TODO: модифицируйте класс окна или стили окна, // изменяя поля структуры cs
m_ClassName = AfxRegisterWndClass
(CS_HREDRAW | CS_VREDRAW // стили окна
0, // без указателя
(HBRUSH) :-.GetStockObject (WHITE_BRUSH) ,// задание чисто белого фона
0) ; // без значка
cs.lpszClass = m_ClassName;
return CScrollView::PreCreateWindow(cs);
}
111111111111111111111111111111111111111111111111111111111111111111111 II Отображение диалогового окна класса CMiniDrawView
void CMiniDrawView::OnDraw(CDC* pDC) {
CMiniDrawDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc);
// TODO: здесь добавьте код отображения собственных данных
if (pDC->GetDeviceCaps (TECHNOLOGY) == DT_RASDISPLAY) {
CSize ScrollSize = GetTotalSize 0; pDC->MoveTo (ScrollSize.cx, 0); pDC->LineTo (ScrollSize.cx, ScrollSize.cy); pDC->LineTo (0, ScrollSize.cy) ;
}
CRect ClipRect; CRect DimRect; CRect IntRect; CFigure *PFigure;
pDC->GetClipBox (SClipRect);
int NumFigs = pDoc->GetNumFigs {); for (int Index = 0; Index < NumFigs; ++Index) {
PFigure = pDoc->GetFigure (Index); DimRect - PFigure->GetDimRsct (); if (IntRect. IntersectRect (DimRect, ClipRect) ) PFigure->Draw (pDC);
}
I II 11111111111111 /11 / i 111 ! 1111111111 ! 11 /1 /111111111111111111111 ! 11
II Диагностика класса CMiniDrawView
#ifdef _DEBUG
void CMiniDrawView::AssertValid() const I
CScrollView::AssertValid() ;
}
void CMiniDrawView:: Dump(CDumpContext& dc) const (
CScrollView::Dump(dc);
}
CMiniDrawDoc* CMiniDrawView::GetDocument() // неотладочная версия
// является встроенной
(
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMiniDrawDoc))); return (CMiniDrawDoc*)m_pDocument ;
)
#endif //_DEBUG
111111111111111111111111111111111111111111111 i 111111111111111 i 11111 II обработчики сообщений класса CMiniDrawView
void CMiniDrawView::OnLButtonDown(UINT nFlags, CPoint point)
// TODO: Здесь добавьте собственный код обработчика // и/или вызов стандартного обработчика
CClientDC ClientDC (this); OnPrepareDC (&ClientDC); ClientDC.DPtoLP (Spoint);
// проверка нахождения указателя внутри области
// рисования окна представления
CSize ScrollSize = GetTotalSize ();
CRect ScrollRect (0, 0, ScrollSize.cx, ScrollSize.cy); if (!ScrollRect.PtlnRect (point)) return;
// сохранение позиции указателя, заголовка мыши // и установка флага операции перемещения: m_PointOrigin = point; m_Point01d = point; SetCapture (); m_Dragging = 1;
// сохранение курсора мыши: ClientDC.LPtoDP (&ScrollRect) ; CRect ViewRect; GetClientRect (SViewRect); CRect IntRect;
IntRect.IntersectRect (SScrollRect, SViewRect); ClientToScreen (SlntRect); :-.ClipCursor (&IntRect);
CScrollView::OnLButtonDown(nFlags, point);
void CMiniDrawView::OnMouseMove(UINT nFlags, CPoint point) f
// TODO: Здесь добавьте собственный код обработчика // и/или вызов стандартного обработчика
CClientDC ClientDC (this); OnPrepareDC (SClientDC); ClientDC.DPtoLP (Spoint);
if (!m_Dragging) {
CSize ScrollSize = GetTotalSize ();
CRect ScrollRect (0, 0, ScrollSize.cx, ScrollSize.cy); if (ScrollRect.PtlnRect (point))
::SetCursor (m_HCross); else
::SetCursor (m_HArrow) ; return; }
ClientDC.SetROP2 (R2_NOT); ClientDC.SelectObject (&m_PenDotted) ; ClientDC.SetBkMode (TRANSPARENT); ClientDC.SelectStockObject (NULL_BRUSH);
switch (((CMiniDrawApp *}AfxGetApp ())->m_CurrentTool) {
case ID_TOOLS_LINE:
ClientDC.MoveTo (m_PointOrigin); ClientDC.LineTo (m_Point01d); ClientDC.MoveTo (m_PointOrigin); ClientDC.LineTo (point); break;
case ID_TOOLS_RECTANGLE: case ID_TOOLS_RECTFILL:
ClientDC.Rectangle (m_PointOrigin.x, m_PointOrigin.y,
m_Point01d.x, m_Point01d.y); ClientDC.Rectangle (m_PointOrigin.x, m_PointOrigin.y, point.x, point.y);
break;
case ID_TOOLS_RECTROUND: case ID_TOOLS_RECTROUNDFILL: (
int SizeRound = (abs (m_Point01d.x - m_PointOrigin.x) +
Предыдущая << 1 .. 105 106 107 108 109 110 < 111 > 112 113 114 115 116 117 .. 173 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100