2

我对鼠标左键有一些功能并且它可以工作,但我想对右键有另一个功能。它也有效,但是当我尝试同时包含它们时,其中一个按钮的功能会停止。我错过了什么?

void GLFWCALL onMouseRightButton( int button, int action ) {
    if( button==GLFW_MOUSE_BUTTON_RIGHT )
    {
        // ... some code
    } 
}

 void GLFWCALL onMouseMoveRight( int a, int b ) {
     if( dragging_right )
     {
         // some math 
     } 
 }

然后初始化后,我有:

glfwSetMouseButtonCallback( onMouseButtonLeft );
glfwSetMousePosCallback( onMouseMoveLeft );
glfwSetMouseButtonCallback( onMouseButtonRight);
glfwSetMousePosCallback( onMouseMoveRight);

但在这种形式下,只有右键的功能有效,如果我评论最后两个功能 -左键的一切都很好glfwSetMouseButtonCallback( onMouseButtonRight);glfwSetMousePosCallback( onMouseMoveRight);

你能告诉我如何让它们都正常工作吗?非常感谢您!

4

1 回答 1

2

当您调用第二个时,glfwSetMouseButtonCallback您实际上是在覆盖最后一个回调。你onMouseButton[...]应该是这样的:

void GLFWCALL onMouseButton( int button, int action ) {
    if( button==GLFW_MOUSE_BUTTON_RIGHT )
    {
        // ... some code
    } 
    else if( button==GLFW_MOUSE_BUTTON_LEFT )
    {

    }
}
于 2013-01-30T13:26:04.183 回答