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

 

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

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

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

111 /1111 /111111 /111111 /1111111 /11111 /111 /11 /1 /1111111111 //1 //111 II Отображение окна класса CMiniDrawView
void CMiniDrawView::OnDraw(CDC* pDC)
{
CMiniDrawDoc* pDoc = GetDocument(); ASSERT_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; CLine *PLine;
pDC->GetClipBox (SClipRect);
int Index = pDoc->GetNumLines (); while (Index—) (
PLine = pDoc->GetLine (Index); DimRect = PLine->GetDimRect (); if (IntRect.IntersectRect (DimRect, ClipRect)) PLine->Draw (pDC);
J
)
1111111111111111111111111111111111111111111111111111111111111111 II Диагностика класса CMiniDrawView
#ifdef _DEBUG
void CMiniDrawView::AssertValid() const {
CScrollView::AssertValid();
}
void CMiniDrawView:: Dump(CDumpContextS dc) const
t
CScrollView:: Dump(dc);
}
CMiniDrawDoc* CMiniDrawView::GetDocument() // неотладочная версия
// является встроенной
f
ASSERT(m_pDocument->IsKindOf(RDNTIME_C LAS S(CMiniDrawDoc))); return (CMiniDrawDoc*)m_pDocument;
}
#endif //_DEBUG
1111111111111111111111111111111111111111 /111 /111111ii111 /11 /11 / / ii Обработчики сообщений класса CMiniDrawView
void CMiniDrawView::OnLButtonDown(UINT nFlags, CPoint point) {
// TODO: Здесь добавьте собственный код обработчика // и/или вызов стандартного обработчика
CClientDC ClientDC (this); OnPrepareDC (SClientDC); ClientDC.DPtoLP (&point) ;
// проверка нахождения указателя внутри // области рисования окна представления: CSize ScrollSize = GetTotalSize ();
CRect ScrollRect (0, 0, ScrollSize.cx, ScrolISize.cy); if (!ScrollRect.PtlnRect (point)) return;
// сохранение позиции указателя, захват мыши и установка флага
// перетаскивания:
m_PointOrigin = point;
m_Point01d = point;
SetCapture ();
m_Dragging = 1;
// отсечение курсора мыши: ClientDC.LPtoDP (SScrollRect); CRect ViewRect; GetClientRect (SViewRect); CRect IntRect;
IntRect.IntersectRect (SScrollRect, SViewRect); ClientToScreen (slntRect); ::ClipCursor (SlntRect);
CScrollView::OnLButtonDown(nFlags, point);
)
void CMiniDrawView::OnMouseMove(UINT nFlags, CPoint point} <
// TODO: Здесь добавьте собственный код обработчика // и/или вызов стандартного обработчика
CClientDC ClientDC (this); OnPrepareDC (SClientDC);
ClientDC.DPtoLP (ipoint);
CSize ScrollSize = GetTotalSize ();
CRect ScrollRect (0, 0, ScrollSize.ex, ScrollSize.cy); if (ScrollRect.PtlnRect (point))
: :SetCursor (m_HCross) ; else
:: SetCursor (m_HArrow) ;
if (m_Dragging) {
ClientDC.SetROP2 (R2_NOT) ; ClientDC.MoveTo (m_PointOrigin) ; ClientDC.LineTo (m_Point01d) ; ClientDC.MoveTo (m_PointOrigin) ; ClientDC.LineTo (point); m_Point01d = point; }
CScrollView::OnMouseMove(nFlags, point);
}
void CMiniDrawView::OnLButtonUp(UINT nFlags, CPoint point) (
// TODO: Здесь добавьте собственный код обработчика // и/или вызов стандартного обработчика
if (m_Dragging) f
m_Dragging = 0;
::ReleaseCapture ();
: .-ClipCursor (NULL);
CClientDC ClientDC (this); OnPrepareDC (iClientDC); ClientDC.DPtoLP (Spoint);
ClientDC.SetROP2 (R2_NOT); ClientDC.MoveTo (m_PointOrigin) ; ClientDC.LineTo (m_Point01d) ; ClientDC.SetROP2 (R2_COPYPEN) ; ClientDC.MoveTo (m_PointOrigin); ClientDC.LineTo (point);
CMiniDrawDoc* PDoc = GetDocument(); CLine *PCLine;
PCLine = PDoc->AddLine (m_PointOrigin.x, m_PointOrigin.y,
point.x, point.y); PDoc->UpdateAllViews (this, 0, PCLine); }
CScrollView::OnLButtonUp(nFlags, point);
Диалоговые и переключаемые панели
MFC поддерживает два дополнительных элемента пользовательского интерфейса, называемые диалоговой панелью (dialog bar) и переключаемой панелью (rebar control).
Диалоговая панель — это гибрид панели инструментов и диалогового окна. Диалоговая панель управляется MFC-классом CDialogBar, порожденным от CControlBar. В отличие от панели инструментов, управляемой классом CToolBar, диалоговая панель основана на шаблоне диалогового окна. Соответственно, панель можно разрабатывать в редакторе диалоговых окон Developer Studio и в нее можно вводить элементы управления любого типа, доступные для диалоговых окон. Редактор диалоговых окон описан в п. 15. Диалоговая панель размещается вверху или внизу главного окна или вдоль левой или правой его сторон. Как и при работе в диалоговом окне, клавиши Tab или Shift+Tab используются для перехода между элементами управления. Информацию о диалоговых панелях можно найти в следующих разделах справочной системы: Visual С++ Documentation, Using Visual С++, Visual С++ Programmer's Guide, Adding User-Inerface Features, Owerviews, Dialog bars: Owerview.
Переключаемая панель — это прямоугольный блок, обычно отображаемый вверху окна, который может содержать одну или несколько полос. Каждая полоса
void CMiniDrawView::OnlnitialUpdate()
(
CScrollView::OnlnitialUpdate();
/7 TODO: Здесь добавьте собственный код обработчика // и/или вызов функции базового класса
Предыдущая << 1 .. 145 146 147 148 149 150 < 151 > 152 153 154 155 156 157 .. 204 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100