2016-11-05 2 views
0

하드웨어 I/O에 대한 명령을 보내기위한 단추가있는 CformView 대화 상자가 있습니다. 사용자가 실수로 Enter 키를 누르면 명령이 실행됩니다. (마지막 단추 하나, 초점이 있음).단추에 Enter 키가 나타나지 않도록하는 방법

이 문제를 어떻게 올바르게 해결합니까?

답변

0

PreTranslateMessage를 사용하는 방법은 없습니다. WM_KEYDOWN 및 VK_ENTER에 대한 CHECK입니다. 그것을 무시하거나 원하는 것을하십시오.

배경 : CFormView :: PreTranslateMessage는 나중에 PreTranslateInput을 호출하고 마지막으로 IsDialogMessage를 호출하며이 함수는 Enter 키를 변환하여 기본 대화 상자 단추를 실행합니다.

+0

CEdit 컨트롤도 있습니다. 이 솔루션은 기존 CEdit 컨트롤에 영향을 미치지 않습니까? –

+1

어떤 컨트롤에 포커스가 있는지 확인할 수 있습니다. 버튼에서 무시하십시오. 좀 더 자세히 설명하면 포커스가있는 창의 윈도우 클래스 유형을 확인하고 메시지를 무시하거나 처리하도록 할 수 있습니다. PreTranslateMessage가 VK_ENTER를 얻는다면, 편집 컨트롤의 반응은 그것이 되돌려 보내는 대화 코드에 달려 있습니다. – xMRi

+0

Thx, 그게 작동합니다. Unfortunatelly (Afx) MessageBoxes에 여전히 문제가 있습니다. 사용자는 우연히 Enter 키를 눌러 그것을 멀리 누를 수 있습니다. 내가 언급 한 PreTranslateMessage와 함께 내 자신의 MessageBoxes를 작성해야한다고 생각합니다. –

관련 문제