2016-08-01 47 views
0

Ich versuche, ein Mausklick-Ereignis auf Editbox zu setzen, und wenn ich auf Bearbeitungsfeld doppelklicke, sollte es ein Meldungsfeld aufrufen.Hilfe zum Initialisieren Doppelklick auf Bearbeitungssteuerelement in MFC

ON_WM_LBUTTONDBLCLK(IDC_EDITItem, &MessageManage::OnItemDoubleClick) 

void MessageManage::OnItemDoubleClick() 
{ 
    MessageBox(m_strItemMsg, "Sample code", MB_OK | MB_ICONINFORMATION); 
} 
+0

Was Sie Probleme haben zu tun? –

+0

Es ist kein Doppelklick-Ereignis aus Bearbeitungsfeld –

+0

Sie können eine Funktion Signatur nicht erfinden, und hoffe, dass alles richtig funktioniert. Die Funktionssignatur für 'ON_WM_LBUTTONDBLCLK' ist [' afx_msg void OnLButtonDblClk (UINT nFlags, CPoint-Punkt) '] (https://msdn.microsoft.com/en-us/library/3efhe03w.aspx). – IInspectable

Antwort

1

Es dauert von Bearbeitungsfeld nicht Doppelklick Ereignis

Eine Möglichkeit, dies Ihre eigene Klasse von CEdit zu tun ist und ON_WM_LBUTTONDBLCLK() Griff abzuleiten. Der folgende Code reagierte auf den Doppelklick auf ein Bearbeitungssteuerelement in einem Beispielprogramm.

BEGIN_MESSAGE_MAP(MyEdit, CEdit) 
    ON_WM_LBUTTONDBLCLK() 
END_MESSAGE_MAP() 

// MyEdit message handlers 

void MyEdit::OnLButtonDblClk(UINT nFlags, CPoint point) 
{ 
    // TODO: Add your message handler code here and/or call default 

    CEdit::OnLButtonDblClk(nFlags, point); 
} 
+0

Eleganteste Lösung! – flaviu2

0

Bei Alternative ist nur PreTranslateMessage auf Ihrem Dialog zu verwenden:

BOOL CMFCApplication1Dlg::PreTranslateMessage(MSG* pMsg) 
{ 
    if (pMsg->message == WM_LBUTTONDBLCLK && 
     pMsg->hwnd == ::GetDlgItem(m_hWnd, IDC_EDIT1)) 
    { 
     AfxMessageBox(_T("Run Code")); 
     return TRUE; //Important!!! Message is handled 
    } 

    return CDialogEx::PreTranslateMessage(pMsg); 
}