33上位机VC MFC实现虚拟键盘
33上位机VC MFC实现虚拟键盘
功能展示
有时我们为了需要,得自己设计一个虚拟键盘,如在触摸屏编程时就没有键盘输入。那么我们如何快速的设计一个自己的键盘呢?我们当前例程就简单快速的完成了。效果如图;
要点提示 要实现一个虚拟的键盘可以在界面上放置一些按钮,用于数据录入。当用户单击某个按钮时,编辑框中会显示相应的数据。程序中需要处理按钮的单击事件,将当前的文本显示在编辑框中。由于虚拟键盘得设计多个按钮,如果为每个按钮都设置一个单击事件函数,会很繁琐,如果仅用一个通用的函数处理,由每个按钮在触发单击事件时调用,就可以简化代码了;
按钮按下会触发WM_LBUTTONDOWN消息,所以我们只要截获这一消息就可以。可以在PreTranslateMessage函数中进行处理 实现功能 1.新建基于对话框的应用程序 2.为了方便效果的展示,这里使用了数据库控件调用与显示了数据信息; 所在在对话框资源中添加ADO DATA控件,DATA GRID控件,并进行相关设置,额外再添加一个搜索用编辑框,虚拟键盘的按钮,具体如例程界面;
3.添加处理按钮单击事件的函数 - void CGkbc8Dlg::OnBtnClick(HWND hButton)
- {
- CButton* pButton = (CButton*)CButton::FromHandle(hButton);
- if (pButton)
- {
- CString str;
- pButton->GetWindowText(str);
- CString text;
- m_Data.GetWindowText(text);
- if (str != "Del")
- {
- text.Insert(text.GetLength(),str);
- }
- else
- {
- text = text.Left(text.GetLength()-1);
- }
- m_Data.SetWindowText(text);
- }
- }
复制代码- BOOL CGkbc8Dlg::PreTranslateMessage(MSG* pMsg)
- {
- // TODO: Add your specialized code here and/or call the base class
- if ((pMsg->message==WM_LBUTTONUP)&&(pMsg->hwnd != m_Data.m_hWnd&&pMsg->hwnd!=m_hWnd))
- {
- OnBtnClick(pMsg->hwnd);
- }
- return CDialog::PreTranslateMessage(pMsg);
- }
复制代码5.给编辑框和数据库控件关联变量 CEdit m_Data; CAdodc m_ADODC; 初始化m_Data m_ADODC.SetRecordSource("select * from drug"); m_ADODC.Refresh();
我们具体来演示功能实现的过程 源码及视频下载 (仅在电脑可见)
|