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

 

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

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

Янг Майкл Дж. Visual С++ 6. Полное руководство: В 2 т.(том2) — Бином, 2006. — 530 c.
Скачать (прямая ссылка): vicualcc2006t2.djvu
Предыдущая << 1 .. 77 78 79 80 81 82 < 83 > 84 85 86 87 88 89 .. 173 >> Следующая

CMiniDrawView::~CMiniDrawView() { }
BOOL CMiniDrawView::PreCreateWindow(CREATESTRUCT& cs) (
// TODO: модифицируйте класс окна или стиль окна, // изменяя поля структуры cs
m_ClassName = AfxRegisterWndClass (CS_HREDRAW | CS_VREDRAW, 0,
(HBRUSH) ::GetStockObject (WHITE_BRU SH), 0) ;
cs.lpszClass = m_ClassName; return CScrollView::PreCreateWindow(cs);
}
1111111111111111111111111111111111111111111111111111111111111111111111 II Отображение окна класса CMiniDrawView
void CMiniDrawView::OnDraw(CDC* pDC) {
CMiniDrawDoc* pDoc = GetDocument() ;
// стили окна // без курсора; // задание чисто // белого фона; // без значка;
AS SERT_VALID(pDoc);
// TODO: здесь добавьте код отображения собственных данных
CSize ScrollSize = GetTotalSize (); pDC->MoveTo (ScrollSize.ex, 0) ; pDC->LineTo (ScrollSize.cx, ScrollSize.cy); pDC->LineTo (0, ScrollSize.cy);
CRect ClipRect; CRect DimRect; CRect IntRect; CFigure *PFigure;
pDC->GetClipBox (&ClipRect);
int NumFigs = pDoc->GetNumFigs () ; for (int Index = 0; Index < NumFigs; ++lndex) (
PFigure = pDoc->GetFigure (Index); DimRect = PFigure->GetDimRect (); if (IntRect.IntersectRect (DimRect, ClipRect)) PFigure->Draw (pDC);
)
)
il 1111111 и I ni 111/in il ni I/I и I и 111 и 111 и /1 il 11111111111 m 1111111
II Диагностика класса CMiniDrawView #ifdef _DEBUG
void CMiniDrawView::AssertValid() const
(
CScrollView::AssertValid();
)
void CMiniDrawView:. : Dump(CDumpContext& dc) const (
CScrollView::Dump(dc);
)
CMiniDrawDoc* CMiniDrawView::GetDocument() // неотладочная версия
// является встроенной
(
ASSERT(m_pDocument->IsKindOf(RUNTIMEJCLASS(CMiniDrawDoc))); return (CMiniDrawDoc*)m_pDocument;
)
#endif // DEBUG
1111111111111111111111111111111111111111111111111111111111111111111111 II Обработчики сообщений класса CMiniDrawView
void CMiniDrawView::OnLButtonDown(uint nFlags, CPoint point)
{
i i TODO: Здесь добавьте собственный код обработчика // и/или вызов стандартного обработчика
CClientDC ClientDC (this); OnPrepareDC (SClientDC); ClientDC.DPtoLP (&point);
// Проверка, находится ли курсор внутри области рисования
// окна представления:
CSize ScrollSize = GetTotalSize ();
CP.ect ScrollRect (0, 0, ScrollSize.cx, ScrollSize.cy); if (!ScrollRect.PtlnRect (point)) return;
II сохранение позиции курсора, указателя мыши, и установка флага
// операции перетаскивания:
m_PointOrigin = point;
m_PointOid = point;
SetCapture ();
ra_ Dragging -- 1;
// сохранение указателя мыши: ClientDC.LPtoDP (SScrollRect); CRect ViewRect; GetClientRect (SViewRect); CRect IntRect;
IntRect.IntersectRect (sScrollRect, SViewRect); ClientToScreen (SlntRect); : :C1LpCursor (SlntRect);
CScroilView::OnLButtonDown(nFlags, point);
void CMiniDrawView::OnMouseMove(UINT nFlags, CPoint point!
{
// TODO: Здесь добавьте собственный код обработчика // и/или вызов стандартного обработчика
CClientDC ClientDC (this); OnPrepareDC (SClientDC); CIientDC.DPtoLP (Spoint);
if (!m_Dragging) {
CSize ScrollSize = GetTotalSize ();
CRect ScrollRect (0, 0, ScrollSize.cx, ScrollSize.cy); if (ScrolIRect.PtlnRect (point)) ::SetCursor (m_HCross);
else
::.SetCursor (m_HArrow);
return; }
ClientDC.SetR0P2 (R2_N0T); 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_RECTRO0NDFILL: {
int SizeRound = (abs (m_Point01d.x - m_PointOrigin.x) +
abs (m_Point01d.y - m_PointOrigin.y)) / 6; ClientDC.RoundRect (m_PointOrigin.x, m_PointOrigin.y,
m_Point01d.x, m_Point01d.y,
SizeRound, SizeRound); SizeRound = (abs (point.x - m_PointOrigin.x) +
abs (point.y - m_PointOrigin.y)) / 6; ClientDC.RoundRect (m_PointOrigin.x, m_PointOrigin.y,
point.x, point.y,
SizeRound, SizeRound);
break; )
case ID_TOOLS_CIRCLE: case ID_TOOLS_CIRCLEFILL:
ClientDC.Ellipse (m_PointOrigin.x, m_PointOrigin.y,
m_Point01d.x, m_Point01d.y); ClientDC.Ellipse (m_PointOrigin.x, m_PointOrigin.y, point.x, point.y);
break;
)
m_Point01d = point;
CScrollView::OnMouseMove(nFlags, point);
>
void CMiniDrawView::OnLButtonUp(UINT nFlags, CPoint point) {
// TODO: Здесь добавьте собственный код обработчика // и/или вызов стандартного обработчика
if (!m_Dragging) return;
m_Dragging = 0; ::ReleaseCapture (); ::ClipCursor (NULL);
CClientDC ClientDC (this);
OnPrepareDC (SClientDC);
ClientDC.DPtoLP (Spoint);
ClientDC.SetROP2 (R2_NOT);
ClientDC.SelectObject (Sm_PenDotted) ;
ClientDC.SetBkMode (TRANSPARENT) ;
ClientDC.SelectStockObject (NULL_BRUSH);
Предыдущая << 1 .. 77 78 79 80 81 82 < 83 > 84 85 86 87 88 89 .. 173 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100