Статья:
Как разрешить перетаскивание окна за любую точку?Автор(ы): Алексей Кирюшкин
Авторы:
Алексей Кирюшкин
Аннотация:
Пример — приложение DragWin (диалоговое окошко, MFC) иллюстрирует два способа осуществить перемещение окна с захватом его не только за заголовок, но и за любую точку на клиентской области. Идея первого способа проста — при получении сообщения о перемещении мыши передвигаем наше окно в соответствии с новыми координатами. Второй способ поизящнее, и заключается в некотором "обмане" Windows, после которого она считает, что мышь находится над заголовоком окна, даже если реально это уже клиентсткая часть.
есть ещё один способ перетаскивания окна (отличается "минимальностью" кода для реализации):
case WM_LBUTTONDOWN:
if(LOWORD(lParam)<=16) //разрешаем перетаскивать окно за левый край размером 16 пикселей
SendMessage(hWnd, WM_SYSCOMMAND, 0xF012, 0);
return 1;
Исправлено форматирование текста. — SchweinDeBurg
Здравствуйте, Алексей Кирюшкин.
Вот так, на мой взгляд, проще всего:
void CMyLab1Dlg::OnMouseMove(UINT nFlags, CPoint point)
{
ReleaseCapture();
SendMessage(WM_SYSCOMMAND,0xF012,0);
CDialog::OnMouseMove(nFlags, point);
}