我想在OnChar中由nChar获取输入汉字的UINT值,要怎么实现呢?

解决方案 »

  1.   

    CString m_Input;
    //get
    m_RInput.GetWindowText(m_Input);
    //Unicode value
    char* chWord;
    CString csAll,csSingle,csCodeValue;
    for(int i=0;i<m_Input.GetLength();i++){
    csSingle=m_Input.GetAt(i);
    chWord=(LPSTR)(LPCTSTR) csSingle;
    BYTE wL=(BYTE)chWord[0]; //這是低位代碼值
      BYTE wH=(BYTE)chWord[1]; //這是高位.把他們組合起來就是你要的
      

  2.   

    可以取得汉字分开的ASCII码值.
      

  3.   

    你用CString的Format("%x")可以轉化成16進制..
      

  4.   

    截取WM_IME_CHAR消息
    例如
    class CMyEdit : public CEdit
    {
    // Construction
    public:
    CMyEdit();
    public:
    virtual ~CMyEdit(); // Generated message map functions
    protected:
    //{{AFX_MSG(CMyEdit)
    afx_msg LRESULT OnImeChar(WPARAM wp, LPARAM lp);
    //}}AFX_MSG DECLARE_MESSAGE_MAP()
    };CMyEdit::CMyEdit()
    {
    }CMyEdit::~CMyEdit()
    {
    }BEGIN_MESSAGE_MAP(CMyEdit, CEdit)
    //{{AFX_MSG_MAP(CMyEdit)
    ON_MESSAGE(WM_IME_CHAR,OnImeChar)
    //}}AFX_MSG_MAP
    END_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////
    // CMyEdit message handlers
    LRESULT CMyEdit::OnImeChar(WPARAM wp, LPARAM lp)
    {
    ///wp就是要取的汉字码
    return Default();
    }
      

  5.   

    用汉字的ASCII加上256就是可以了
      

  6.   

    我已经实现了,谢谢各位先,我发现输入汉字时,它向系统发2次WM_CHAR消息,只要取2次低位拼一下就可以了,仅供大家参考吧,,给分给分