Шаг 211 - Таскаем форму за любое место

 
----- Original Message ----- 
From: SLY 
To: kaev@yandex.ru
Sent: Friday, July 28, 2000 7:21 PM
Subject: MFCByStep

Привет!
Вот еще одна хитрость как обмануть Windows - перетаскивание окна 
за форму при нажатии на левую кнопку mouse.

Вот история такая. Я тут два дня убил на тестирование :-) Пытался понять в чем прикол. Ведь она и левой кнопкой такскается сама по себе. Поэтому я таскал правой. Вся радость в том, что окно таскается только за заголовок, а в данном примере за любое место формы :-) Будьте внимательны. Создайте AppWizard приложение и посмотрите. Схватите мышкой в середине формы. Ни куда она не потянется :-). А вот, чтобы она передвигалась надо перегрузить сорбытие нажатия левой кнопки мыши через Add Windows Message Handle и написать такой код.

void CMoveWindowDlg::OnLButtonDown(UINT nFlags, CPoint point) 
{
 CDialog::OnLButtonDown(nFlags, point);
 ReleaseCapture();
 ::SendMessage(AfxGetApp()->m_pMainWnd->GetSafeHwnd(),
	WM_SYSCOMMAND, SC_MOVE | HTCAPTION, 0);
}

Идея вообщем такая. Надо перенаправить сообщение передвижения мышью SC_MOVE туда кто умеет его обрабатывать HTCAPTION.

Материалы для шага прислал SLY (sly@vmz.nnov.ru).


Загрузить проект | Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 3.08.2000