2017-03-05 53 views
0

CMFCToolBarComboBoxEdit处理BackSpace按钮,但它不处理删除按钮。 除PreTranslateMessage之外,有没有办法处理删除按钮? 如果是的话,这是什么方式? 如果没有,那么我怎么能得到控件中的当前光标位置以及如何使用其索引来移除特定的字符,这样我就可以移除光标右侧的字符(如果没有选中)? 在此先感谢。CMFCToolBarComboBoxEdit句柄删除按钮

回答

1

是使用,PreTranslateMessage。如果检测到应处理的顺序,请致电:

if (..) // Check if you have a message that should 
     // be passed to the window directly 
{ 
    TranslateMessage(pMsg); 
    DispatchMessage(pMsg); 
    return TRUE; 
} 

可以在PreTranslateMessage始终做到这一点,当您发现该消息应该由默认的控制处理,而不应受到任何其他的控制处理在执行PreTranslateMessage的窗口链中。如果您打开组合框并希望内部处理Page Down/Up而不是视图或任何加速器,则这也很有用。

+0

谢谢@xMRi –

0

我已经处理了删除键在PreTranslateMessage如下:

BOOL PreTranslateMessage(MSG* pMsg) 
{ 
    if(WM_KEYDOWN == pMsg->message && VK_DELETE == pMsg->wParam) 
    { 
    int iStartChar = -1, iEndChar = -1; 
    GetSel(iStartChar, iEndChar); 
    if(iStartChar != iEndChar) 
     Clear(); //clear the selected text 
    else 
    { 
     SetSel(iStartChar, iStartChar + 1); 
     Clear(); 
    } 
    } 

    return CMFCToolBarComboBoxEdit::PreTranslateMessage(pMsg); 
} 
+1

看看我的答案。它更通用... – xMRi