我希望能够在选择编辑字段时创建一个屏幕键盘来弹出。我正在使用MFC Visual studio 2005(基于C ++)。
到目前为止,我的代码如下:
void CTestHarnessDlg::OnEnChangeEdit3()
{
CKeyboard Dlg;
Dlg.DoModal();
}
当我运行对话框并单击所选字段时,在我按下键盘上的键之前,它不会打开屏幕键盘。有没有办法在不将任何内容放入文本字段的情况下打开键盘?
我一直在看ON_EN_SETFOCUS,但我对MFC很新。我不确定如何在代码中使用CEDIT命令类...感谢任何帮助,谢谢!
答案 0 :(得分:1)
打开项目,然后在上面的菜单中转到:
CTestHarnessDlg
)Commands
标签上输入您的修改ID Messages
的ListBox将填充来自该控件的所有消息EN_SETFOCUS
,然后按Add Handler
并输入您想要的名称或保留默认名称Edit Code
,你应该就方法实施转到你的类声明(通常在.h文件中)并添加方法声明,你必须知道你需要添加的函数的类型
afx_msg void OnSetfocusEdit();
转到消息映射(通常在cpp文件中)并添加映射,您必须知道必须使用的宏,在本例中为ON_EN_SETFOCUS
ON_EN_SETFOCUS(IDC_YOUR_EDIT_ID, &CTestHarnessDlg::OnSetfocusEdit)
转到您的cpp(通常在cpp文件中)并添加方法实现
void CTestHarnessDlg::OnSetfocusEdit()
{
TCHAR sysDir[MAX_PATH];
if( !GetSystemDirectory( sysDir, MAX_PATH) )
{
ASSERT(FALSE);
return;
}
ShellExecute(NULL, NULL, L"osk.exe", _T("") , sysDir, SW_SHOW);
}
命令ShellExecute(NULL, NULL, L"osk.exe", _T("") , sysDir, SW_SHOW);
将在屏幕虚拟键盘上打开窗口,你没有创建自己的键盘对话框,默认情况下已经有一个窗口
你必须创建自己的对话框(CKeyboard)但IMO你不应该使用CDialog::DoModal方法,你应该使用CDialog::Create使对话无模式然后使用CWnd::ShowWindow然后使用CWnd::SetWindowPos将对话框移动到您想要的位置。