Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Перетягивание окна за раб. обл.


Автор: devmstr 23.10.2005, 09:53
Как сделать так, чтобы окно можно было перетягивать не за загаловок, а за всё окно.

Автор: devmstr 23.10.2005, 13:29
Вот, может кому то понадобится
Код

static POINT pos;
    static POINT CrPos;
    static RECT rct;
    static RECT rCl;    
    switch (msg)
    {
    case WM_CREATE:
        GetCursorPos(&pos);
        ClientToScreen(hWnd, &pos);
        break;
    case WM_LBUTTONDOWN:
        pos.x = (int)(short)LOWORD(lPar);
        pos.y = (int)(short)HIWORD(lPar);
        SetCapture(hWnd);
        break;
    case WM_LBUTTONUP:
        ReleaseCapture();
    case WM_MOUSEMOVE:
        if (wPar == MK_LBUTTON)
        {
            CrPos.x        = (int)(short)LOWORD(lPar);
            CrPos.y        = (int)(short)HIWORD(lPar);
            GetWindowRect(hWnd, &rct);
            rct.left    = rct.left    + CrPos.x - pos.x;
            rct.top        = rct.top     + CrPos.y - pos.y;
            SetWindowPos(hWnd, HWND_TOPMOST, rct.left, rct.top, 0, 0, SWP_SHOWWINDOW|SWP_NOSIZE);
        }
        break;
    

Автор: Earnest 23.10.2005, 14:47
Я думаю, можно и проще: перехватить сообщение WM_NCHITTEST и отвечать всегда HTCAPTION.

Автор: devmstr 24.10.2005, 20:02
Уже юзаю.
Код

case WM_NCHITTEST:
        return HTCAPTION;
        break;

Но все равно спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)