2013-09-05 3 views
0

Я делаю небольшой инструмент рисования с MFC.Показать информацию о диалоге в MFC

Когда кнопка вниз фиксирует исходную точку, когда кнопка захватывает новую точку, а затем рисует линию от исходной точки до новой точки.

Я уже создал диалог. Но я не знаю, как отображать как исходную точку, так и новую точку на ней, пока кнопка вверх.

Код рисования линии и диалог, показывающий, как показано ниже:

void CDrawView::OnLButtonDown(UINT nFlags, CPoint point) 
{ 
    m_ptOrigin = point; 

    CView::OnLButtonDown(nFlags, point); 
} 

void CDrawView::OnLButtonUp(UINT nFlags, CPoint point) 
{ 
    CDC *pDC = GetDC(); 
    pDC->MoveTo(m_ptOrigin); 
    pDC->LineTo(point); 
    ReleaseDC(pDC); 

    CArgDlg object; // Jump out a dialog 
    object.DoModal(); 

    CView::OnLButtonUp(nFlags, point); 
} 

Может кто-нибудь мне помочь?

+1

Вы хотите, чтобы диалоговое окно отображалось с этой информацией? – Edeph

+0

@Edeph Да, я хочу, чтобы диалоговое окно всплывало с x и y двух точек. –

ответ

2

Переместите код чертежа с обработчиков кнопок на OnDraw().

Предполагаете, вы хотите просто отобразить значения двух точек в диалоговом окне? Объявите две переменные-члены m_pt1 и m_pt2 в классе диалога и заполните ваши статические/редактировать элементы управления из этих значений в OnInitDialog().

void CDrawView::OnLButtonUp(UINT nFlags, CPoint point) 
{ m_ptEnd = point; // new member variable 
    CRect rc(m_ptOrigin, m_ptEnd); 
    InvalidateRect(&rc); // will invoke OnDraw() 

    CView::OnLButtonUp(nFlags, point); 

    CArgDlg object; // Jump out a dialog 
    object.m_pt1 = ptOrigin; 
    object.m_pt2 = m_ptEnd; 
    object.DoModal(); 
} 
0

Override OnDraw(), не начинайте рисовать внутри обработчиков кнопок. Дело в том, что базовая структура win32 отслеживает, когда и что нужно сделать, и вы рисуете ее, когда она просит вас рисовать (т. Е. В OnDraw()).

BTW: Я не уверен, чего вы хотите достичь в диалоговом окне, потому что в данный момент вы рисуете линию на представлении, содержащую обработчики кнопок, а не в диалоговом окне.

Смежные вопросы