当前位置:编程学习 > wap >>

Pocket PC Edit控件限制输入的怪问题

我子类化了一般的edit控件,
void CSIPEdit::OnEnSetfocus()
{
//::SendMessage(m_hWnd, EM_SETINPUTMODE, 0, MAKELPARAM(EIM_NUMBERS, 0));
SHSipPreference(m_hWnd, SIP_UP);
}

底下的软键盘是弹出来了,但默认是拼音输入键盘。我想切换到英文输入键盘,发送EM_SETINPUTMODE消息好像不行,无论是EIM_NUMBERS还是EIM_TEXTS
但在定义资源的时候,把这个控件Password的属性声明为true,就可以让软键盘只能用英文了,说明还是有办法实现这一点,不清楚在程序中应该怎么做(Password的属性字符会*化,可不是我所希望的)


另外,我在这个对话框中也想对输入进行限制,
BOOL CConfigDlg_FR::PreTranslateMessage(MSG* pMsg)
{
if ( pMsg->message == WM_CHAR || pMsg->message == WM_IME_CHAR)
{
if ( GetFocus() == GetDlgItem(IDC_EDIT1)   ||
 GetFocus() == GetDlgItem(IDC_EDIT2)   ||
 GetFocus() == GetDlgItem(IDC_EDIT3)   ||
 GetFocus() == GetDlgItem(IDC_EDIT4) ) 
{
TCHAR nChar = LOWORD(pMsg->wParam);
if ((nChar > 0 && nChar < 27) ||   //   允许控制字符如   Ctrl-C、Ctrl-V   等  
(nChar >= _T('0') && nChar <= _T('9')) ||
nChar == _T('.') ||
nChar == _T('-') ||
nChar == _T('+') )  
{
return CDialog::PreTranslateMessage(pMsg);
}
else
{
MessageBeep(1000);
 return TRUE; //直接返回
}
}
}
return CDialog::PreTranslateMessage(pMsg);
}
很奇怪的是在 vs2005的模似器上是可用了,可是在真正的PocketPC(HP1950)上运行了,却不管用了,我测试的结果是在真PPC上,这里根本没有收到WM_CHAR或WM_IME_CHAR的消息,我也不明白是什么原因…… --------------------编程问答-------------------- 对于设置输入法的问题,首先通过SipEnumIM(pEnumIMProc)枚举系统支持的所有的输入法,pEnumIMProc是一个call back函数,其原形是:
int SipEnumIMProc( 
  IMENUMINFO* pIMInfo
);
这样可以通过参数pIMInfo得到系统所支持的所有的输入法。
然后通过SipSetCurrentIM设置当前输入法。
补充:移动开发 ,  Windows Phone
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,