CMFCToolBarComboBoxEdit处理删除按钮

时间:2017-03-05 11:27:29

标签: c++ mfc

CMFCToolBarComboBoxEdit处理BackSpace按钮,但它不处理删除按钮。 有没有办法处理除PreTranslateMessage以外的删除按钮? 如果是的话,这是什么方式? 如果不是,那么如何获取控件中的当前光标位置以及如何使用其索引删除特定字符,以便我可以删除光标右侧的字符,如果没有选择任何内容? 提前谢谢。

2 个答案:

答案 0 :(得分: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,这也很有用。

答案 1 :(得分: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);
}