捕获键盘输入的字符串自动查找(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)

{