毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> 开发语言 >> 正文

C++combobox 如何阻止自动匹配

更新时间:2012-8-20:  来源:毕业论文

vc++ combobox 如何阻止自动匹配(在控件文本发生变化的函数内,我添加如下代码)

LRESULT CMainDlg::OnCbnEditchangeCombo1(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
// TODO: 在此添加控件通知处理程序代码

 

int stai = m_baidu.GetCount(); //得到框内条数
int word_count = 1;
for(int i = stai-1;i>= 0;i--)//删除之前列表内所有内容
{
m_baidu.DeleteString(i);  
}
  m_baidu.ShowDropDown(TRUE); //打开列表显示数据(只要用这条必须要先在取值之前使用)

   
GetDlgItemText(IDC_COMBO1,m_str,1024);//取值之后自动选择第一行,疑似BUG

int word = strlen(m_str);  
  int count_i;
for(count_i = 0; count_i <= m_NR[0].many; count_i++) //添加相似内容到列表
{
  char *str2 = (LPSTR)(LPCTSTR)m_NR[count_i].str1; //string 转 char类型
//if(mystrnicmp(str2,m_str,strlen(m_str)) ||strcmp(str2,m_str) == 0)
//{
if(mystrnicmp(str2,m_str,word) && strlen(m_str) == word &&word_count>=1&&word_count < 6 )
{  
m_baidu.AddString(m_NR[count_i].str1);
word_count++;
}
// }
}

char szSQL[256] = {0};
  sprintf(szSQL, "select * from type");
  m_adoRecordSet.SetAdoConnection(&m_adoConnection);
  BOOL cOpen = m_adoRecordSet.Open(szSQL);  
if(cOpen)
{  
/********************************************************/
int count_i;
for(count_i = 0;!m_adoRecordSet.IsEOF();count_i++)
{
m_adoRecordSet.GetCollect("user_id", m_NR[count_i].strtemp);
m_adoRecordSet.GetCollect("user_nr", m_NR[count_i].str1);
m_adoRecordSet.MoveNext();
}
m_NR[0].many = count_i;
/********************************************************/
}
m_adoRecordSet.Close(); //关闭数据库

 

::SetCursor(::LoadCursor(NULL,IDC_ARROW)); //使用上述语句会使鼠标消失,这句是显示鼠标
m_baidu.SetEditSel(strlen(m_str),-1);
  memset(m_str,0,sizeof(m_str));
return 0;
}
输入内容,显示出来与之相似的内容,但是当控件失去焦点的时候,文本就显示列表第一行内容,之前自己输入的内容清掉了。看别人的资料说要把自动排列关闭,但是目前关闭了也不行,高手请指教
你用 Edit + ListBox 不就得了,更方便。
1.先把内容清空
2.ShowDropDown
3.AddString

OK了。。。  

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。