Как разрешить перетаскивание окна за любую точку?
От: Алексей Кирюшкин Россия http://malgarr.blogspot.com/
Дата: 13.04.02 21:18
Оценка: 19 (4)
Статья:
Как разрешить перетаскивание окна за любую точку?
Автор(ы): Алексей Кирюшкин


Авторы:
Алексей Кирюшкин

Аннотация:
Пример — приложение DragWin (диалоговое окошко, MFC) иллюстрирует два способа осуществить перемещение окна с захватом его не только за заголовок, но и за любую точку на клиентской области. Идея первого способа проста — при получении сообщения о перемещении мыши передвигаем наше окно в соответствии с новыми координатами. Второй способ поизящнее, и заключается в некотором "обмане" Windows, после которого она считает, что мышь находится над заголовоком окна, даже если реально это уже клиентсткая часть.
Можно проще
От: Serhio Россия  
Дата: 14.04.02 21:18
Оценка: :)
void CDragWinDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
ReleaseCapture();
::SendMessage( GetSafeHwnd(), WM_SYSCOMMAND,
SC_MOVE|HTCAPTION, 0);
}
Re: Как разрешить перетаскивание окна за любую точку?
От: napa3um  
Дата: 01.07.06 09:49
Оценка:
есть ещё один способ перетаскивания окна (отличается "минимальностью" кода для реализации):
case WM_LBUTTONDOWN:
            if(LOWORD(lParam)<=16) //разрешаем перетаскивать окно за левый край размером 16 пикселей
                SendMessage(hWnd, WM_SYSCOMMAND, 0xF012, 0);
            return 1;
Re: Как разрешить перетаскивание окна за любую точку?
От: xmen  
Дата: 14.10.06 16:41
Оценка:
Исправлено форматирование текста. — SchweinDeBurg

Здравствуйте, Алексей Кирюшкин.

Вот так, на мой взгляд, проще всего:

void CMyLab1Dlg::OnMouseMove(UINT nFlags, CPoint point)
{
    ReleaseCapture();
    SendMessage(WM_SYSCOMMAND,0xF012,0);

    CDialog::OnMouseMove(nFlags, point);
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.