내 응용 프로그램의 (커다란) 사용자 정의 컨트롤에 상황에 맞는 메뉴를 추가하려고하지만이를 만들 때 여러 가지 문제가 발생했습니다.wxWidgets 및 상황에 맞는 메뉴
오른쪽 마우스 클릭, 메뉴 키를 누른 상태에서 Shift + F10을 누르면 컨텍스트 메뉴를 생성해야하는 경우가 있습니다. 모든 경우에 메뉴는 ContextMenu 메서드에 의해 만들어지고 표시됩니다.
오른쪽 마우스는 다른 특별한 것들을하므로 항상 컨텍스트 메뉴를 생성하지는 않습니다. 다양한 마우스 이벤트를 처리하고 필요에 따라 ContextMenu를 호출합니다.이 모든 것이 잘 작동합니다.
문제는 키보드 생성 컨텍스트 메뉴 때문입니다. EVT_CONTEXT_MENU에 대한 컨트롤에서 처리기를 설정 한 다음 ContextMenu를 호출합니다. 많은 경우 두 키 조합 모두 무시되는 것처럼 보입니다. 때로는 Shift + F10이 올바르게 작동하지만 같은 경우 메뉴 키가 마우스 오른쪽 버튼 클릭 핸들러를 호출하여 잘못된 동작이 발생하는 경우가 있습니다 ...
메뉴 키의 경우 키 이벤트 처리도 시도했지만 다른 모든 키가 잘 작동하는 것 같다 있지만 메뉴 키를 결코
- 왜 어떻게 든 wxWidgets에 의해 무시 핵심 방법은 ... wxWidgets에 이러한 트리거 것 같다. 통제가 집중하는 한 그들은 일해야합니다. 그들이 "일하기"시작할 때 그들은 초점을 다시 잃을 때까지 일을 계속하지만, 왜 시작하지 않거나 시작하게 만들지는 모르겠다. (나는 컨텍스트 메뉴 나 키 이벤트를 다른 곳에서는 처리하지 않는다. 내 테스트 애플 리케이션).
키 이벤트 또는 컨텍스트 메뉴 이벤트 대신 EVT_RIGHT_UP 처리기에 메뉴 키 이벤트가 들어가는 방식은 무엇입니까?
는 나는 그러나 문서의 주위에 나는 내 문제에 관한 정보를 발견하지 않았습니다 얼마 동안 그물에보고 한 wxWidgets에이 키를 처리하는 방법에 대한 이해와 근본적으로 뭔가 문제, 가정.
Windows Vista에서 wxMSW 2.8.10을 사용하고 있습니다.
내가 말했듯이 나는 wxContextMenuEvent를 사용하고 있는데, 어떤 이유로 그것들은 호출되거나 트리거되지 않는다. 다른 것들에 대한 내 컨트롤에서 마우스 이벤트를 처리해야하지만, 그 비트가 잘 작동합니다. 그 이유는 wxContextMenuEvent가 Windows 컨텍스트 메뉴 키 조합에 대해 처음부터 안정적으로 호출되지 않는 이유입니다. –
좋아, 그 이유는 어떻게 든 마우스 처리기에 갇혀 점점 설명, 그리고 난 그냥 (-1, -1)에서 모든 마우스 이벤트를 확인하고 생략해야 할 것 같아요. 하지만 wxWidgets가 이벤트를 완전히 풀어 버리는 이유를 설명하지 못합니다. 즉, 메뉴 핸들러 나 shift + f10을 호출하는 핸들러가 없습니다. –
'wxContextMenuEvent'만으로는 문제가 없었습니다. 키보드 이벤트가 작동하지 않으면 포커스 문제 일 수 있습니까? 그러나 어쨌든, (-1, -1)에서 이벤트 만 'Skip()'하지 않을 것이고, 컨텍스트 메뉴를 표시하지 않고 모든 좌표에 대해 * all * 이벤트를 호출 할 것입니다. – mghie