我已经用两个按钮实现了这个功能。代码如下: //软键盘显示
void CSoftDlg::OnButton1()
{
// TODO: Add your control notification handler code here
CWnd * pWnd = GetDlgItem(IDC_EDIT1); //IDC_EDIT1是一个文本框 ,我要在这里用软键盘输入
if (pWnd)
{
pWnd->SetFocus();
HIMC hIMC = ImmGetContext(pWnd->m_hWnd);
DWORD dwConv = 0, dwSent = 0;
// DWORD dwTemp; ImmGetConversionStatus(hIMC,&dwConv,&dwSent);
if (dwConv & IME_CMODE_SOFTKBD)
dwConv &= ~IME_CMODE_SOFTKBD;
else
dwConv |= IME_CMODE_SOFTKBD;
ImmSetConversionStatus(hIMC,dwConv,dwSent);
ImmReleaseContext(pWnd->m_hWnd,hIMC);
}
} //输入法显示
void CSoftDlg::OnButton2()
{
// TODO: Add your control notification handler code here
DWORD dwConv = 0, dwSent = 0;
CWnd * pWnd = GetDlgItem(IDC_EDIT1);
if (pWnd)
{
pWnd->SetFocus();
ImmSimulateHotKey(pWnd->m_hWnd, IME_CHOTKEY_IME_NONIME_TOGGLE);
HIMC hIMC = ImmGetContext(pWnd->m_hWnd);
// DWORD dwTemp;
ImmGetConversionStatus(hIMC,&dwConv,&dwSent);
dwConv |= IME_CMODE_SOFTKBD;
ImmSetConversionStatus(hIMC,dwConv,dwSent);
ImmReleaseContext(pWnd->m_hWnd,hIMC);
}
}
我现在是先点击按钮2,再点击按钮1来实现调用软件盘的功能。
我的第一个问题,当软键盘出现后,我可以通过软键盘在文本框里输入,但是我发现当我点击软件盘的ESC键的时候,整个窗口都关闭了,我想问下这个是为什么?
我的第二个问题,这段代码我是网上找的,我不是很明白。我现在想当我点击文本框的时候,就可以弹出软键盘,我想问这个怎么实现。
void CSoftDlg::OnButton1()
{
// TODO: Add your control notification handler code here
CWnd * pWnd = GetDlgItem(IDC_EDIT1); //IDC_EDIT1是一个文本框 ,我要在这里用软键盘输入
if (pWnd)
{
pWnd->SetFocus();
HIMC hIMC = ImmGetContext(pWnd->m_hWnd);
DWORD dwConv = 0, dwSent = 0;
// DWORD dwTemp; ImmGetConversionStatus(hIMC,&dwConv,&dwSent);
if (dwConv & IME_CMODE_SOFTKBD)
dwConv &= ~IME_CMODE_SOFTKBD;
else
dwConv |= IME_CMODE_SOFTKBD;
ImmSetConversionStatus(hIMC,dwConv,dwSent);
ImmReleaseContext(pWnd->m_hWnd,hIMC);
}
} //输入法显示
void CSoftDlg::OnButton2()
{
// TODO: Add your control notification handler code here
DWORD dwConv = 0, dwSent = 0;
CWnd * pWnd = GetDlgItem(IDC_EDIT1);
if (pWnd)
{
pWnd->SetFocus();
ImmSimulateHotKey(pWnd->m_hWnd, IME_CHOTKEY_IME_NONIME_TOGGLE);
HIMC hIMC = ImmGetContext(pWnd->m_hWnd);
// DWORD dwTemp;
ImmGetConversionStatus(hIMC,&dwConv,&dwSent);
dwConv |= IME_CMODE_SOFTKBD;
ImmSetConversionStatus(hIMC,dwConv,dwSent);
ImmReleaseContext(pWnd->m_hWnd,hIMC);
}
}
我现在是先点击按钮2,再点击按钮1来实现调用软件盘的功能。
我的第一个问题,当软键盘出现后,我可以通过软键盘在文本框里输入,但是我发现当我点击软件盘的ESC键的时候,整个窗口都关闭了,我想问下这个是为什么?
我的第二个问题,这段代码我是网上找的,我不是很明白。我现在想当我点击文本框的时候,就可以弹出软键盘,我想问这个怎么实现。
{ if(pMsg -> message == WM_KEYDOWN){
if(pMsg -> wParam == VK_ESCAPE){
return TRUE;
} }}
不知道是不是你要的,按ESC 后,不关主窗口