我用SDL构建了一个时钟,它是一个没有边界的窗口。
现在,我仍然希望能够在屏幕上移动时钟,因此我编写了一个移动时钟的功能。基本上,它会等待mousedown输入,然后计算直到您释放鼠标为止的移动距离。然后它移动窗口。问题是,它只会在我的时钟窗口内获得mousepos,因此,如果我单击时钟的左上角然后滑动到我的时钟窗口的右下角,则只能勉强移动它。

sPos moveClock(int event){
    if(event==-1&&mPos.x==0&&mPos.y==0){
        mPos = setPos(gvMousePos.x,gvMousePos.y);
        cout << "down" << endl;
    }
    if(event==-65){
        mPos = setPos(gvMousePos.x-mPos.x,gvMousePos.y-mPos.y);
        cout << "up" << endl;
        sPos temPos = mPos;
        mPos = setPos(0,0);
        return temPos;
    }
    return setPos(0,0);
}


我希望能够将时钟移动到屏幕上的任意位置,因此我需要一种使mousepos甚至在窗口外的方法。或者即使我移到SDL创建的窗口外,也可以在按下鼠标时计算距离。

最佳答案

SDL_CaptureMouse() :

关于c++ - 我可以在SDL窗口之外跟踪鼠标pos吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58191787/

10-11 23:22