CComboBox 控件,响应ON_CBN_SELCHANGE消息时为何鼠标光标不显示?

smartdrvsky 2008-11-11 11:09:19

m_searchCombo.GetWindowText(strWinText);
// ::SetFocus(m_searchCombo.m_hWnd);

why setfocus method doesn't work?
在该控件上输入时,鼠标好像被隐藏了,如何让鼠标光标显示出来?
...全文
918 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnzdgs 2008-11-11
  • 打赏
  • 举报
回复
如果你自己没有添加控制鼠标光标的代码,光标是不会隐藏的。
smartdrvsky 2008-11-11
  • 打赏
  • 举报
回复
只是写了一个响应消息的函数
执行的时候不能显示鼠标光标

怎样在执行的时候显示光标?|
zhucde 2008-11-11
  • 打赏
  • 举报
回复
啥意思啊? 你重载过了?
smartdrvsky 2008-11-11
  • 打赏
  • 举报
回复
anybody here ?
up
smartdrvsky 2008-11-11
  • 打赏
  • 举报
回复
问题已解决
谢谢各位

ShowDropDown();之后SetCursor(LoadCursor(NULL, IDC_ARROW));即可
smartdrvsky 2008-11-11
  • 打赏
  • 举报
回复
TO 满天星:
开线程我不会
以下是响应CBN_SELCHANGE消息的函数,麻烦您指导一下.

OnCbnEditchangeSearchcombo()
{
// TODO: 在此添加控件通知处理程序代码
int nSize = m_searchCombo.GetCount();
for (int n = nSize;n >0;n--)
m_searchCombo.DeleteString(n-1);
CString strWinText;
m_searchCombo.GetWindowText(strWinText);

int nCount = strWinText.GetLength();
if(nCount < 1)
return;
vector<CString> strAddVec;
//判断首字符是否是汉字
//char chFirst = strWinText.GetAt(0);
wchar_t * chPtr = strWinText.GetBuffer(0);
int nRes = isascii(* chPtr); // 0代表汉字,1代表英文字符
//free(chPtr);
if(nRes == 0)//如果是汉字
FintItemByChinese(strWinText,strAddVec);
else //如果是英文字符
FintItemByEnglish(strWinText,strAddVec);
for (int k = 0;k < strAddVec.size();k++)
m_searchCombo.AddString(strAddVec[k]);
// keybd_event(VK_ESCAPE,0x45,KEYEVENTF_EXTENDEDKEY | 0,0 );

m_searchCombo.ShowDropDown();
ShowCursor();
// PostMessage(CB_SETCURSEL,0, 0);
}

cnzdgs 2008-11-11
  • 打赏
  • 举报
回复
ShowCursor怎么会不起作用?
另外,如果你在响应CBN_SELCHANGE时要执行很长时间,应该另创建一个线程来处理,避免阻塞主窗口的消息循环。
smartdrvsky 2008-11-11
  • 打赏
  • 举报
回复
TO 满天星
ShowCursor显示鼠标方法不可用
不起作用,谢谢解答.
我再找找
本想在显示下拉框之前用keybd_event(VK_ESCAPE,0x45,KEYEVENTF_EXTENDEDKEY | 0,0 );发送一个模拟ESC的消息
再ShowDropDown
结果发现行不通,在输入后不显示下拉框内容了...
thank you all the same
cnzdgs 2008-11-11
  • 打赏
  • 举报
回复
ShowCursor(TRUE);
rivershan 2008-11-11
  • 打赏
  • 举报
回复
http://www.codeproject.com/KB/combobox/akautocomplete.aspx
http://www.codeproject.com/KB/combobox/combocompletion.aspx
http://www.codeproject.com/KB/combobox/automultcolcombobox.aspx

这都是auto complete combobox的例子
smartdrvsky 2008-11-11
  • 打赏
  • 举报
回复
to 夏至矽
响应ON_CBN_SELCHANGE消息的函数里面我是做了这样一些事情

1:根据用户输入内容(此内容为模糊内容)查找相关选项
比如用户输入"b"下拉框里面可能出现"不能","不可以","不够"等词条
2:输入完成后想调用ShowDropDown()显示上述词条
3:当用户选择某一词条,比如选中"不够"时,定位到另一个树控件的相关Item上面去
问题出在2之后
即输入完成后无法找到鼠标光标,此时也能选中,但无法找到鼠标的光标,造成假死现象
如果不调用ShowDropDown(),用户手动点下拉框出现的那个箭头则没此问题
但不够人性化.
这是我的问题,麻烦解答.
yjgx007 2008-11-11
  • 打赏
  • 举报
回复
插字符caret, 光标cursor, 鼠标mouse
先弄清楚这几个概念 .
guixian310 2008-11-11
  • 打赏
  • 举报
回复
既然是WINDOWS的特点那他就有内部机制隐藏光标
那要看他内部是在哪个地方隐藏的,重载都不一定好使

怎么解决?晃下鼠标光标就出来了
smartdrvsky 2008-11-11
  • 打赏
  • 举报
回复
TO cnzdgs :
在编辑器里(textbox、combobox甚至是word)输入时,鼠标就会隐藏!
是WINDOWS系统的一个特点!
在ShowDropDown()之后鼠标就不会见了
之前没操作过鼠标,请问该问题如何解决?

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧