Mdi и работа с мышью
//--------------------------------------------------------------
void CLineAppView::OnLButtonDown(UINT nFlags, CPoint point)
{
if (!isDown) {
lpDC = new CClientDC( this );
lpPen = new CPen( PS_SOLID, nWidth, RGB(0,0,0) );
oldPen = lpDC-> SelectObject( lpPen );
isDown = true;
lpDC-> MoveTo( point.x, point.y );
}
CView::OnLButtonDown(nFlags, point);
}
void CLineAppView::OnLButtonUp(UINT nFlags, CPoint point)
{
if (isDown) {
lpDC-> SelectObject( oldPen );
delete lpPen;
delete lpDC;
isDown = false;
}
CView::OnLButtonUp(nFlags, point);
}
void CLineAppView::OnMouseMove(UINT nFlags, CPoint point)
{
if( isDown )
lpDC->LineTo( point.x, point.y );
CView::OnMouseMove(nFlags, point);
}
//--------------------------------------------------------------
Если кнопку нажать в дочернем окне, а отпустить за его пределами и снова навести курсор на дочернее окно, то рисование продолжится (хотя кнопка отпущена). Что делать и где чтоб при выходе курсора из дочернего окна отправить в него WM_LBUTTONUP?
а в OnLButtonUp вызови ::ClipCursor(NULL);
Цитата:
Originally posted by rostyslav
в OnLButtonDown задай прямоугольник, внутри которой может ходить курсор функцией ClipCursor(rect)
а в OnLButtonUp вызови ::ClipCursor(NULL);
в OnLButtonDown задай прямоугольник, внутри которой может ходить курсор функцией ClipCursor(rect)
а в OnLButtonUp вызови ::ClipCursor(NULL);
Спасибо! Работает, хотя я имел в виду немного другое. ClipCursor просто не выпускает курсор из прямоугольника. А как можно решить обратную задачу: нажать кнопку над главным окном, навести курсор на дочернее не отпуская, и чтобы линия при этом нарисовалась? Пробовал вызывать SendMessage из разных мест, что-то не выходит...
Есть еще функции SetCapture() и ReleaseCapture().