列表框自动匹配

转载 : http://topic.csdn.net/u/20100827/14/1d9bb139-c14b-4eb6-bec6-58976318199e.html

新建一个类继承于CComboBox,添加OnCommand消息。在里面添加以下代码即可

BOOL AutoCompletion::OnCommand(WPARAM wParam, LPARAM lParam)
{
 // TODO: Add your specialized code here and/or call the base class
 if ( HIWORD(wParam) == EN_CHANGE )
 {
 //  if (!m_bWorkOnText) 
 //  return true;
  //ShowDropDown(TRUE);
  //::SetCursor(::LoadCursor(NULL, IDC_ARROW));
  //取得编辑框中的文字;
  CString strWindowText;
  GetWindowText(strWindowText);
  int nLength = strWindowText.GetLength();

  //取得当前的选择范围
  DWORD dwCurSel = GetEditSel();
  WORD dStart = LOWORD(dwCurSel);
  WORD dEnd = HIWORD(dwCurSel);

  // 实际做查找和选择的语句
  int nChoice;
  if ((nChoice=SelectString(-1, strWindowText)) == CB_ERR)
  {
  SetWindowText(strWindowText); // 恢复文字
  if (dwCurSel != CB_ERR)
  SetEditSel(dStart, dEnd); // 恢复原先的位置
  }
  else
  {
  ShowDropDown(TRUE); //使用这个鼠标会不见
    ::SetCursor(::LoadCursor(NULL,IDC_ARROW));
    SetCurSel(nChoice);

  }

  // 把添加的文字做为选择的文字
  if (dEnd < nLength && dwCurSel != CB_ERR)
  SetEditSel(dStart, dEnd);
  else
  SetEditSel(nLength, -1);

  return true;
 }
 else
  return CComboBox::OnCommand(wParam, lParam);
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值