键盘输入 请问VC创建一个MFC对话框程序后 (焦点不在Edit控件时) 按下任何键都会有个“铛铛”的声音 请问如何去掉这个声音? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Hook掉WM_CHAR 或者 这个声音文件位于X:\WINOWS\Media下 替换 改名 或者删除 Hook掉WM_CHAR 或者 这个声音文件位于X:\WINOWS\Media下 替换 改名 或者删除 我已在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; /****************************************************************************//键盘钩子****************************************************************************/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) ) { } } 接上楼:在 BOOL CDemoDlg::OnInitDialog() 加上 SetKeyboardHook() 在VC中用DX的问题 关于TopMost问题 win32 无法调用 封装 opengl 基本操作的动态链接库 一个关于资源的问题,非常难处理,有没有见义勇为的人帮我一把 怎么运行windows里的程序? 我的Visual C++MFC编程实例(PDF)缺少第9,13章,谁有可否妹我,谢了。 关于CreateEllipticRgn的奇怪现象? 请求急问????? 学习c++,是为了什麽? 关于p2p通讯的NAT穿透问题(UDP协议) windows编程编写拼图游戏 最近看到做界面时使用HTML,用CDHtmlDialog究竟效率如何,大家讨论一下
请问您所讲的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;
/****************************************************************************
//键盘钩子
****************************************************************************/
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) )
{
}
}
在 BOOL CDemoDlg::OnInitDialog() 加上 SetKeyboardHook()