QQ登录

只需一步,快速开始

160上位机VC MFC键盘按键提示声音添加

[ 复制链接 ]

160上位机VC MFC键盘按键提示声音添加

160上位机VC MFC键盘按键提示声音添加
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()中初始化变量,挂接上键盘钩子
  1. char *pChar;
  2.         char szBuf[_MAX_PATH];
  3.         GetModuleFileName(AfxGetInstanceHandle(),szBuf,sizeof(szBuf));
  4.     pChar = szBuf;
  5.     while(strchr(pChar,'\\'))
  6.         {
  7.            pChar = strchr(pChar,'\\');
  8.            pChar++;
  9.         }
  10.     *pChar = '\0';                 
  11.     sSoundPath=szBuf;
  12.         sSoundPath+="Sound\";

  13.         DWORD id=GetWindowThreadProcessId(m_hWnd,NULL);
  14.         g_hHook=SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)KeyboardProc,AfxGetInstanceHandle(),id);
复制代码
其中函数KeyboardProc()为自定义回调函数,在函数内实现按下键盘的获取及声音的播放
最后是变量g_hHook的释放UnhookWindowsHookEx(g_hHook);,当然根目录得准备声音文件,复制例程文件夹Sound到工程根目录便可;
我们来演示功能实现过程;

  

您的支持是我们创作的动力!  

  

您可花点闲钱积分自助任意充值

  

成为VIP会员 全站资源任意下载永久更新!

请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:160.上位机VC MFC键盘按键提示声音添加.rar 
文件大小:555.94 KB  售价:10金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我


回复

使用道具 举报

快速回复 返回列表 客服中心 搜索