1:BOOL CProjectDlg::PreTranslateMessage(MSG* pMsg) 虚函数好像响应的键全是大写字母,如果是小写字母呢?比如按下“L”键,只响应小写的l,而不是响应大写的“L”(即pMsg->wParam输出的是小写的l)。
2:BOOL CProjectDlg::PreTranslateMessage(MSG* pMsg) 虚函数在响应键时有声音发出,如何去掉其声音!

解决方案 »

  1.   

    我的一个例子:
    if(pMsg->message == WM_KEYDOWN)
    {
             CString strBcode,strTemp;
             MSG msg;
    *********************************************
             TranslateMessage(pMsg);
    PeekMessage(&msg, NULL, 0, 0, PM_REMOVE);
    ***********************************************
    用上面两句转换,对msg操作就可以了;
    strTemp = msg.wParam;
    if (GetFocus()!=GetDlgItem(IDC_EDTBCODE))
    {
    if(msg.wParam>32 && msg.wParam<126)
    {
    m_edtbcode.SetWindowText(strTemp);
    }
    m_edtbcode.SetFocus();
    m_edtbcode.SetSel(-1);
    }
    }
      

  2.   

    你可以同时查看CAPS键和SHIFT键的状态,然后不就知道用户输入的是大写字符还是小写字符
    了吗?
      

  3.   

    MFC对键盘的响应好像不区分大小写的,
    如果实在想这样做的话,
    我觉得有一个方法不知可不可行.
    先从键盘输入一个字符,将其存到一个变量当中,比如L和l,
    然后对它进行处理,当为"L"时执行某个语句,
    当为"l"时执行另外的语句
      

  4.   

    用GetKeyState(VK_SHIFT)&0x8000和GetKeyState(VK_CAPITAL)&0X0001可以判断你按键时
    SHIFT键和CAP LOCKS键的状态
      

  5.   

    我试过GetKeyState(VK_CAPITAL)还可以,但是GetKeystate(VK_SHIFT)好像不行。
    因为键盘同时要响应两个键(即SHIFT键还有一个按下的字母键)。对于SHIFT键好像没有“状态”而言!我取得“状态”后还是不能作大写切换,如何让键盘响应两个键啊来判断大小写?(因为我是要做一个打字游戏)还有没有朋友知道啊!帮帮小弟啊!最好简单直观一点,有源代码最好。
      

  6.   

    你可以用ASCII码!大写小写相差好像32
      

  7.   

    问题我是我要按SHIFT 键和相应的字母键才进行大小写转换啊!我好急啊!
      

  8.   

    这个就可以响应大小写。
    BOOL CAfaDlg::PreTranslateMessage(MSG* pMsg) 
    {
    // TODO: Add your specialized code here and/or call the base class
        if(pMsg -> message == WM_CHAR)
    {
            if(pMsg -> wParam =='A')
    {
    CString temp=pMsg->wParam;
    AfxMessageBox(temp);
    }
    if(pMsg->wParam=='a')
    {
    CString temp=pMsg->wParam;
    AfxMessageBox(temp)
    }
    }
    return CDialog::PreTranslateMessage(pMsg);
    }
      

  9.   

    谢谢,原来我是把
    BOOL CAfaDlg::PreTranslateMessage(MSG* pMsg) 
    {
    // TODO: Add your specialized code here and/or call the base class
        if(pMsg -> message == WM_CHAR)
    .............
    }
    中的WM_CHAR当成WM_KEYDOWN来作判断,所以当然不对啦.谢谢USTCTony(Tony) 朋友!
      

  10.   

    您可以使用窗口子类化技术,在处理消息的时候将所输入的大写字母屏蔽。
    抱歉是在网吧上网,所以没有例程给您。
    MSDN中有一篇文章,在“技术文章”中,就是讲窗口子类化的,您可以参考一下。