2013-11-25 1 views
0

저는 CformView를 가지고 있으며 컨트롤을 가지고 있습니다. 내 CFormView에 OnKeyDown 이벤트를 구현했습니다. 포커스가 내 CformView의 콤보 상자에 있기 때문에 내 이벤트가 트리거되지 않는 것을 제외하면 모든 것이 좋습니다. 콤보 상자에 이벤트를 수신하지 않으려합니다. 나는 그것을 받기 위해 CFormView 싶습니다. 그래서 PreTranslateMessage (MSG * pMsg)를 구현하고 콤보 상자에서 이벤트를 제거하지만 결코 CFormView에 제공하지 않습니다. 다음은 코드입니다.MFC CFormView OnKeyDown 이벤트가 트리거되지 않았습니다.

BOOL CfinalprojView::PreTranslateMessage(MSG* pMsg) { 
if(pMsg->message == WM_KEYDOWN) { 
    SendMessage(WM_COMMAND, MAKEWPARAM(IDD_FINALPROJ_FORM, BN_CLICKED), (LPARAM)0); 
    return TRUE; 
} else if(pMsg->message == WM_KEYUP) { 
    return TRUE; 
} else { 
    return CFormView::PreTranslateMessage(pMsg); 
}} 

내가 뭘 잘못하고 있니?

는하여 CformView의 열쇠 이벤트를 전달 할 수있는 방법이없는 것 같다,

+0

왜 원하지 않는 이벤트를 처리 할 수있는 콤보 상자를? – rrirower

+0

나는 사용자가 키를 친 때 CFormView에 물건을 칠하고 싶기 때문에. – corneliu

+0

콤보 상자가 폼의 자식 컨트롤 인 경우 페인팅을 수행하기 위해 부모 (폼) 메서드를 실행하지 못하게하는 것은 무엇입니까? – rrirower

답변

0

따라서, 사전에

코르 넬리을 주셔서 감사합니다. 대신, 하나를 PreTranslateMessage (MSG * PMSG)에서 이벤트를 잡을 같이 누른 키를 확인할 수 있습니다

BOOL CfinalprojView::PreTranslateMessage(MSG* pMsg) { 
    if(pMsg->message == WM_KEYDOWN) { 
     if(pMsg->wParam == VK_DELETE) { 
      ... 
     } 
     return TRUE; 
    } 
    else if(pMsg->message == WM_KEYUP) 
     return TRUE; 
    else 
     return CFormView::PreTranslateMessage(pMsg); 
}