2017-03-05 111 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