下面的代码限制了编辑框只能输入“,”,如何限制编辑框只能输入中文的“,”?BOOL CAlsdkfDlg::PreTranslateMessage(MSG* pMsg) 
{
if(WM_CHAR == pMsg->message)
{
if(GetDlgItem(IDC_EDIT1)->GetSafeHwnd() == pMsg->hwnd)
{
char ch = (TCHAR) pMsg->wParam;

if(ch == ',' || ch == VK_BACK)
{
return CDialog::PreTranslateMessage(pMsg);
}
else
{
return true;
}
}
} return CDialog::PreTranslateMessage(pMsg);
}

解决方案 »

  1.   

    unicode:
    English char “,” ---0x002c
    Chinese char “,”---0xff0c
      

  2.   

    问题是:输入中文的时候,PreTranslateMessage触发两次。中文的“,”好像是通过两次传递过来的。
      

  3.   

    if(ch == ',' || ch == VK_BACK) // 那就把这改成中文逗号
    {
      return CDialog::PreTranslateMessage(pMsg);
    }
    else
    {
      return true;
    }
      

  4.   

    一个办法是把,转化为,
    一个办法是试试看wm_ime_char消息:)
      

  5.   

    BOOL CAlsdkfDlg::PreTranslateMessage(MSG* pMsg) 
    {
    if(WM_CHAR == pMsg->message)
    {
    if(GetDlgItem(IDC_EDIT1)->GetSafeHwnd() == pMsg->hwnd)
    {
    char ch = (TCHAR) pMsg->wParam;

    if(ch == ',' || ch == VK_BACK)->这里该成你的符号
    {
    return CDialog::PreTranslateMessage(pMsg);
    }
    else
    {
    return true;
    }
    }
    } return CDialog::PreTranslateMessage(pMsg);
    }