Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Mdi и работа с мышью

2.2K
26 сентября 2004 года
kashman
21 / / 22.07.2003
Доброго всем времени суток. Помогите VC-ламеру! Пишу простое тестовое приложение. При WM_LBUTTONDOWN рисуется линия в дочернем окне, при WM_LBUTTONUP прекращает рисовать, как карандаш в графредакторе Paint:
//--------------------------------------------------------------
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?
368
26 сентября 2004 года
rostyslav
629 / / 13.07.2004
в OnLButtonDown задай прямоугольник, внутри которой может ходить курсор функцией ClipCursor(rect)

а в OnLButtonUp вызови ::ClipCursor(NULL);
2.2K
26 сентября 2004 года
kashman
21 / / 22.07.2003
Цитата:
Originally posted by rostyslav
в OnLButtonDown задай прямоугольник, внутри которой может ходить курсор функцией ClipCursor(rect)

а в OnLButtonUp вызови ::ClipCursor(NULL);


Спасибо! Работает, хотя я имел в виду немного другое. ClipCursor просто не выпускает курсор из прямоугольника. А как можно решить обратную задачу: нажать кнопку над главным окном, навести курсор на дочернее не отпуская, и чтобы линия при этом нарисовалась? Пробовал вызывать SendMessage из разных мест, что-то не выходит...

368
26 сентября 2004 года
rostyslav
629 / / 13.07.2004
Есть еще функции SetCapture() и ReleaseCapture().
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог