请问VC创建一个MFC对话框程序后 (焦点不在Edit控件时) 按下任何键都会有个“铛铛”的声音 请问如何去掉这个声音?

解决方案 »

  1.   

    Hook掉WM_CHAR 或者 这个声音文件位于X:\WINOWS\Media下 替换 改名 或者删除
      

  2.   

    Hook掉WM_CHAR 或者 这个声音文件位于X:\WINOWS\Media下 替换 改名 或者删除 
     
      

  3.   

    我已在PreTranslateMessage中讲WM_CHAR 消息转发了 可是还是会有这种声音出来
    请问您所讲的Hook是怎么处理的
    case WM_CHAR:
    if((VK_NUMPAD0  <= pMsg->wParam) && (pMsg->wParam <= VK_NUMPAD9) && (GetKeyState(pMsg->wParam) < 0))
    pMsg->wParam -= '0'; if( ('A' <= pMsg->wParam) && (pMsg->wParam <= 'Z') ||\
    ('a' <= pMsg->wParam) && (pMsg->wParam <= 'z') ||\
    ('0' <= pMsg->wParam) && (pMsg->wParam <= '9') 
    )
    ::PostMessage(m_hWnd,WM_REEDIT,pMsg->wParam,pMsg->lParam);//消息重发
    break;
      

  4.   


    /****************************************************************************
    //键盘钩子
    ****************************************************************************/
    HHOOK g_hKeyboard=NULL;
    LRESULT CALLBACK KeyboardProc(int code,WPARAM wParam, LPARAM lParam)
    {
    if(code <0)
    return CallNextHookEx(g_hKeyboard,code,wParam,lParam);


           TCHAR ClassName[200];
    ::GetClassName(hWnd,ClassName,sizeof(ClassName)/sizeof(TCHAR));
    if(strcmp(ClassName,"Edit")!=0)
               return 1; //返回,不让消息往下传递
         

    return CallNextHookEx(g_hKeyboard,code,wParam,lParam);
    }
    void SetKeyboardHook()
    {
        g_hKeyboard=SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,NULL,GetCurrentThreadId());
    }void UnKeyboardHook()
    {
    if ( UnhookWindowsHookEx(g_hKeyboard) )
    {

    }

    }
      

  5.   

    接上楼:
    在 BOOL CDemoDlg::OnInitDialog() 加上 SetKeyboardHook()