C++ Draggable无边框窗口问题

Rya*_*rks 3 c++ winapi visual-studio-2012

我正在设计一个自定义窗口边框,我在顶部放置一个位图作为拖动条.这是有效的,但是当我试图拖动窗口时,它将自己置于两个不同的区域,并在两者之间闪烁.这是一个视频:

http://dl.dropbox.com/u/85700751/capture-1.avi

当窗口闪烁时,我正试图拖动它(由于某种原因它没有显示我的光标).这是我的拖动代码:

case WM_LBUTTONDOWN: {
    int posX = LOWORD(lParam);
    int posY = HIWORD(lParam);
    if((isDragging==false)&&(posX>4)&&(posX<470)&&(posY>4)&&(posY<24))
        {
            isDragging = true;
            ClipCursor(rect);
            oldCursorX = posX;
            oldCursorY = posY;
        }
    }
    break;
case WM_LBUTTONUP: {
    isDragging = false;
    ClipCursor(NULL);
    }
    break;
case WM_MOUSEMOVE: {
        if(isDragging)  {
            SetWindowPos(hWnd, NULL, LOWORD(lParam)-oldCursorX, HIWORD(lParam)-oldCursorY, 500, 500, NULL);
        }
    }
    break;
Run Code Online (Sandbox Code Playgroud)

Her*_*bob 5

简单地回复WM_NCHITTEST通常最容易.对于该消息,LPARAM将鼠标点击X和Y坐标(与WM_LBUTTONDOWN相同).如果他们在您的可拖动区域内,请返回HTCAPTION.然后系统将自动为您处理所有拖动逻辑.