QQ登录

只需一步,快速开始

97上位机VC MFC提示条提示声音与文本

[ 复制链接 ]

4.最后是自定义类的使用:在主对话框资源添加几控件用于提示效果测试,如我们例程添加有IDC_EDIT1,IDC_WAV ...

4.最后是自定义类的使用:在主对话框资源添加几控件用于提示效果测试,如我们例程添加有IDC_EDIT1,IDC_WAV ...

97上位机VC MFC提示条提示声音与文本

功能展示

提示条也就是CToolTipCtrl控件,默认情况下只能够简单的提示文本信息,我们当前例程实现了在提示文本的同时提示声音的功能,效果如图;
要点提示
例程播放声音的功能是通过微软自带的函数sndPlaySound()实现,在使用这个函数,我们工程中得添加它所在头文件及库也就是添加两行代码便可#include<mmsystem.h>#pragma comment(lib,“winmm.lib ”);然后我们现提示条位置发生变化时也就是处理WM_WINDOWPOSCHANGED消息函数时播放声音便可 ;




实现功能
1.新建基于对话框的应用程序
2.从CToolTipCtrl派生一个自定义 类class CSoundToolTip : publicCToolTipCtrl;头文件中包含两行代码#include <mmsystem.h>#pragmacomment(lib,“winmm.lib ”);添加变量WORD m_wWaveResourceID;用于保存声音文件ID,及它的设置函数voidSetPopupSound(WORD wResourceID) { m_wWaveResourceID = wResourceID;}再将此变量在构造函数中初始化为0,m_wWaveResourceID = 0;

3.添加WM_WINDOWPOSCHANGED消息处理函数及声音播放函数
  1. void CSoundToolTip::OnWindowPosChanged(WINDOWPOS FAR* lpwndpos)
  2. {
  3.         CToolTipCtrl::OnWindowPosChanged(lpwndpos);
  4.         if (lpwndpos->flags & SWP_SHOWWINDOW)//窗口可见时
  5.                 if (m_wWaveResourceID)//声间文件已设置
  6.                         PlayResource(m_wWaveResourceID);
  7. }
  8. BOOL CSoundToolTip::PlayResource(WORD wResourceID)
  9. {        
  10.         // Get the handle to the current instance of the application
  11.         HINSTANCE hInstance = AfxGetInstanceHandle();
  12.     ASSERT (hInstance != NULL);
  13.         // Find the WAVE resource
  14.         HRSRC hResInfo =  FindResource(hInstance, MAKEINTRESOURCE(wResourceID), _T("WAVE"));
  15.         if(hResInfo == NULL)
  16.                 return FALSE;
复制代码
  1. // Load the WAVE resource
  2.     HANDLE hRes = LoadResource(hInstance, hResInfo);
  3.         if (hRes == NULL)
  4.                 return FALSE;
  5.         // Lock the WAVE resource and play it
  6.     LPSTR lpRes = (LPSTR) LockResource(hRes);
  7.         if(lpRes==NULL)
  8.                 return FALSE;
  9.         if (sndPlaySound(lpRes, SND_MEMORY | SND_ASYNC) == NULL)
  10.                 return FALSE;        
  11.     // Free the WAVE resource and return success or failure.
  12.     FreeResource(hRes);
  13.         return TRUE;
  14. }
复制代码
4.最后是自定义类的使用:在主对话框资源添加几控件用于提示效果测试,如我们例程添加有IDC_EDIT1,IDC_WAVE1IDC_WAVE2,IDC_SLIDER1;再添加 变量  CSoundToolTip  m_ToolTip;在OnInitDialog()中初始化 m_ToolTip.Create(this);//创建 m_ToolTip.SetPopupSound(IDR_TOOLTIP_SOUND1);//设置声音 m_ToolTip.AddTool(GetDlgItem(IDC_WAVE1),"");//添加有提示文本的控件
m_ToolTip.AddTool(GetDlgItem(IDC_WAVE2),""); m_ToolTip.AddTool(GetDlgItem(IDC_EDIT1), "");m_ToolTip.AddTool(GetDlgItem(IDC_SLIDER1), "");
在PreTranslateMessage()函数中调用RelayEvent()函数及添加提示文本
  if(pMsg->message== WM_MOUSEMOVE)
  {
  m_ToolTip.RelayEvent(pMsg);//处理鼠标相关消息
  m_ToolTip.UpdateTipText("文本框提示文本测试",GetDlgItem(IDC_EDIT1));
  m_ToolTip.UpdateTipText("按钮提示文本测试",GetDlgItem(IDC_WAVE1));
  m_ToolTip.UpdateTipText("按钮提示文本测试",GetDlgItem(IDC_WAVE2));
  m_ToolTip.UpdateTipText("滑块提示文本测试",GetDlgItem(IDC_SLIDER1));
  }


我们来演示下功能实现的整个过程
请点击此处下载

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

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

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

  

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

  

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

  

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


回复

使用道具 举报

点击查看
快速回复 返回列表 客服中心 搜索