捕获键盘输入的字符串自动查找(vc++)
来源:百度知道 编辑:UC知道 时间:2024/05/12 11:48:39
在对话框程序,怎么实现在输入框输入一个字符串然后自动在ListCtrl显示的数据中查找含有该字符串的数据,比如我的学号为8000106,我输入8,程序会自动查找以8开头的学号,输入800,程序会自动查找以800开头的学号,输入800010,程序会自动查找以800010开头的学号,我完全输入8000106,程序就自动查找到8000106学号,请问这是怎么实现的,一定要自动查找而不需要点击任何按钮。
添加一个消息,就是输入框内容改变的消息 ,好象是On...Changed()
只要文本内容改变就会触发该函数。
在On...Changed()里面实现查找。
要想在第一时间对对话框的按键做出响应,需要重载PreTranslateMessage
以下的代码实现了在对话框中显示虚拟键值(virtual-key code)
BOOL CTestDlg::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message == WM_KEYDOWN)
{
///或者直接调用OnKeyDown
CString strwParam;
strwParam.Format("%d ",pMsg->wParam);
CDC* pDC = GetDC();
pDC->TextOut(10,10,strwParam);
ReleaseDC(pDC);
}
return CDialog::PreTranslateMessage(pMsg);
}
此方法也适用于FORMVieW或其它控件中对键盘按键的响应,以下的代码来自MSDN,
实现了当按下上下左右方向键时调用OnKeyDown,我们可以在OnKeyDown中作相应处理。
BOOL CSampleControl::PreTranslateMessage(LPMSG lpmsg)
{
BOOL bHandleNow = FALSE;
switch (lpmsg->message)
{
case WM_KEYDOWN:
switch (lpmsg->wParam)
{