(MFC)在对话框中,我捕捉了键盘钩子,实现按键发出美妙的声音,但总有“咚咚”

来源:百度知道 编辑:UC知道 时间:2024/05/18 10:32:12
(MFC)在对话框中,我捕捉了键盘钩子,实现按键发出美妙的声音,但每次按键都会先有“东东”的声音然后才播放相关的音乐,但是我把对话框的所有按钮都删了,按键的时候就再也不出“咚咚”了,直接出美妙的声音,太好了
那么,如何实现在对话框里有按钮的情况下,按键不再“咚咚”呢?谢谢大家,急啊
说白了,就是想实现:按键不出“咚咚”或者别的系统自带的声音

你好,希望我的回答对你有帮助!

1.你现在用的是一般键盘钩子。按你的要求,你需要用低级键盘钩子

2.我写了个示例工程(VC6下编译通过)。下载地址:http://sites.google.com/site/qiujiejia1/Home/LowleverHook.zip

3.如果你用的是VC6,要用到低级鼠标钩子,需要在stdafx.h里添加#define _WIN32_WINNT 0x0500 //用低级鼠标钩子需要添加这一句
具体看示例工程里的代码

4.以下是部分代码,仅供参考。
(1) 定义变量
HWND g_hWnd=NULL;
HHOOK g_hKeyboard=NULL;

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

if(::GetForegroundWindow()==g_hWnd) //判断当前接收按键消息的是此对话框程序
{
if (wParam==WM_KEYDOWN)
{
int t=((KBDLLHOOKSTRUCT *) lParam )->vkCode;
trace(t);
//在这里添加你的按键发出音乐的代码
return 1;
}
else if (wParam==WM_KEYUP)
{
return 1;
}
}