2012-09-15 4 views
0

은 내가 wxWidgets에 그들은 일반적으로 왼쪽 클릭에 대한 것을 제외하고 내가 그것을 말할 수 있어야하는 것처럼 동일한 방식으로 행동, 중간 버튼 마우스 클릭에 응답 컨트롤 일부를하고자하는 시나리오 중간 클릭이의이 내 응용 프로그램에서 뭔가 다른 일을하십시오.wxWidgets 컨트롤이 가운데 버튼 클릭을 허용하도록하려면 어떻게해야합니까?

특히, 나는 버튼 및 슬라이더와 협력하고, 버튼을 압하가되고 싶어 슬라이더가 가운데 버튼을 드래그로하고있다. 내가 윈도우즈에있다. (그리고 그것이 유일한 플랫폼이다.) 차이점이있다.

WX 워드 프로세서를 통해 비트를 파고 후 나는 제어가 수신하는 마우스 버튼 설정 할 수있는 방법을 찾지 못했습니다. 그래서, 내 첫번째 생각은 가운데 버튼 이벤트를 캡처 해당 왼쪽 버튼 이벤트로 변환하는 이벤트 핸들러를 작성했고,이를 처리 할 WX를 알려줍니다

void OnMouseEvent(wxMouseEvent & wxevent) 
{ 
    wxMouseEvent wxeventTranslated = wxevent; 

    if (wxevent.MiddleDown()) 
    { 
     wxeventTranslated.SetEventType(wxEVT_LEFT_DOWN); 
    } 
    else if (wxevent.MiddleUp()) 
    { 
     wxeventTranslated.SetEventType(wxEVT_LEFT_UP); 
    } 
    else 
    { 
     return; 
    } 

    m_pWxbutton->ProcessWindowEvent(wxeventTranslated); 
} 

(여기 m_pWxbuttonwxButton입니다 어디에 이벤트가 등록됨). 그것은 작동하지 않았다 : 마우스 이벤트 핸들러가 호출되었지만 wxEVT_COMMAND_BUTTON_CLICKED 이벤트를 얻지 못하거나 버튼이 GUI에서 "눌린"시각적 상태로 들어 가지 않습니다. 또한 전달 된 이벤트에서 이벤트 유형을 변경 한 다음 Skip()을 호출 한 버전을 시도했지만 동일한 결과가있었습니다.

물론 버튼에 대해서는 나 자신도 쉽게 감지 할 수 있지만 슬라이더에 대해서도이 기능을 사용하기를 바라고 있으며 모든 마우스 로직을 다시 구현할 생각은별로하지 않습니다. :)

어떻게 마우스 이벤트를 변환하고 네이티브 GUI 이벤트처럼 행동 할 수 있습니까? 아니면 시도해야 할 완전히 다른 접근 방식이 있습니까?

답변

0

표준 컨트롤의 동작을 수정할 수 없습니다. 이것이 표준 인 이유입니다. 물론 사용자가 원하는 방식으로 마우스를 조작하는 사용자 정의 버튼과 같은 컨트롤을 사용할 수 있지만 표준 컨트롤을 수정하여 원하는대로 수행 할 수는 없으며 플랫폼 별 코드를 사용할 수있는 것이 최선이며 일부 플랫폼에서는 가능합니다. 이것은 완전히 불가능할 수 있습니다.

관련 문제