工控编程吧
标题:
160上位机VC MFC键盘按键提示声音添加
[打印本页]
作者:
qq263946146
时间:
2016-1-11 21:27
标题:
160上位机VC MFC键盘按键提示声音添加
(, 下载次数: 0)
上传
点击文件名下载附件
160上位机VC MFC键盘按键提示声音添加
功能展示
键盘按下都是没有声音的,如果在开发一些像打字练习软件类程序,想让每一个按键在用户按下时都发出声音,比如按下J键,发出J声就得给每一个按钮匹配上声音。我们当前例程实现了这一功能,效果如图;
要点提示
声音的播放我们可以使用VC自带的函数sndPlaySound()当前工程以sndPlaySound("1.wav",SND_ASYNC)
形式播放,函数的使用得添加其所在头文件#include <mmsystem.h>#pragmacomment(lib,"winmm.lib")
另外关键点是用户所按下的按键如何获取;我们当前例程通过设置一个键盘钩子进行获取SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)KeyboardProc,AfxGetInstanceHandle(),id);在自定义的回调函数KeyboardProc()中实现键盘的获取;
实现功能
1.新建基于对话框的应用程序
2.在主对话框源文件定义全局变量CString sSoundPath; HHOOK g_hHook=NULL;再添加稍后播放声音函数的头文件#include <mmsystem.h> #pragmacomment(lib,"winmm.lib")
3.在对话框OnInitDialog()中初始化变量,挂接上键盘钩子
char *pChar;
char szBuf[_MAX_PATH];
GetModuleFileName(AfxGetInstanceHandle(),szBuf,sizeof(szBuf));
pChar = szBuf;
while(strchr(pChar,'\\'))
{
pChar = strchr(pChar,'\\');
pChar++;
}
*pChar = '\0';
sSoundPath=szBuf;
sSoundPath+="Sound\";
DWORD id=GetWindowThreadProcessId(m_hWnd,NULL);
g_hHook=SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)KeyboardProc,AfxGetInstanceHandle(),id);
复制代码
其中函数KeyboardProc()为自定义回调函数,在函数内实现按下键盘的获取及声音的播放
最后是变量g_hHook的释放UnhookWindowsHookEx(g_hHook);,当然根目录得准备声音文件,复制例程文件夹Sound到工程根目录便可;
我们来演示功能实现过程;
[iqiyi]http://player.video.qiyi.com/2194d9833a3f4eb53327cbeed19d40be/0/0/w_19rte53571.swf-albumId=5167943009-tvId=5167943009-isPurchase=0-cnId=12[/iqiyi]
[note]1[/note]
(, 下载次数: 0)
上传
点击文件名下载附件
欢迎光临 工控编程吧 (https://www.gkbc8.com/)
Powered by Discuz! X3.4