2015-03-05 2 views
1

У меня есть простой вопрос: почему следующий код:GetMousePosition вернуться всегда 0

int p[2] = {0, 0}; 
vtkRenderWindow->GetInteractor()->GetMousePosition(&p[0], &p[1]); 
TRACE("Mouse position: %d.%d\n", p[0], p[1]); 

дал мне всегда положение мыши: 0.0?

Это много значит для меня, если я решаю эту проблему !!! Не могли бы вы помочь мне, пожалуйста?

ответ

1

Вообще позиция событие интерактора всегда обновляется на события, как MouseMove, MouseWheelForward и т.д.

Так что, если вы создаете свой собственный стиль Interactor и обрабатывать MouseWheelForwardEvt, то вы получите текущую позицию курсора мыши в рендерере, запросив позицию события.

Кроме того, вы должны убедиться, что у RenderWindow есть фокус при прокрутке MouseWheel, иначе событие не будет распознано.

Хороший пример для вашего собственного стиля Interactor можно найти здесь VTK MouseEvents

На примере в ссылке, ваш MouseWheelForwardEvt может выглядеть следующим образом (при условии, vtkInteractorStyleTrackballCamera используется).

virtual void OnMouseWheelForwardEvt() 
{ 
    myInteractor->GetEventPosition(x,y); 
    //do more stuff 

    //forward the event 
    vtkInteractorStyleTrackballCamera::OnMouseWheelForwardEvt(); 

} 
+0

Как всегда, вы мне очень помогли! :) – flaviu2

+0

Да, я не пересылаю сообщение с колесиком мыши, потому что я не хочу увеличивать колесико мыши ... Я хочу сделать что-то еще ... – flaviu2

+0

Но у меня есть маленький вопрос: как можно Я избегаю zomming на сообщении колесика мыши, как долго я позволяю событию колеса мыши пересылки? Является ли это возможным ? – flaviu2

Смежные вопросы