长按键盘只希望响应一次的问题MFC 基于对话框模式 5
这个程序主要是MFC弹钢琴,想让长按的时候只出一个音,因为现在长按是断断续续的,重复发送消息。由于ONKEYDOWN函数不可以在基于对话框模式下使用,所以转用lParam...
这个程序主要是MFC弹钢琴,想让长按的时候只出一个音,因为现在长按是断断续续的,重复发送消息。由于ONKEYDOWN函数不可以在基于对话框模式下使用,所以转用lParam来控制只响应一次消息,但是不知道怎么写进去,网上也没有详细的解释
int i=0;
BOOL CMelodyDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if (pMsg->message==WM_KEYDOWN)
{
pMsg->lParam=1;//这个地方不知道该怎么编,就是希望之后的出声可以长按的时候只出一次声音
switch (pMsg->wParam )
{
case 'A':
{
t1=GetTickCount();//程序段开始前取得系统运行时间(ms)
// PlaySound((LPCTSTR)IDR_WAVE1, AfxGetInstanceHandle(), SND_RESOURCE | SND_ASYNC);
if(i==1)
{
mciSendString("close A",0,0,NULL);
i=0;
}
mciSendString("open D:\\A.wav alias A",0,0,NULL);
mciSendString("play A",0,0,0);
i=1;
break;
}
}
} 展开
int i=0;
BOOL CMelodyDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if (pMsg->message==WM_KEYDOWN)
{
pMsg->lParam=1;//这个地方不知道该怎么编,就是希望之后的出声可以长按的时候只出一次声音
switch (pMsg->wParam )
{
case 'A':
{
t1=GetTickCount();//程序段开始前取得系统运行时间(ms)
// PlaySound((LPCTSTR)IDR_WAVE1, AfxGetInstanceHandle(), SND_RESOURCE | SND_ASYNC);
if(i==1)
{
mciSendString("close A",0,0,NULL);
i=0;
}
mciSendString("open D:\\A.wav alias A",0,0,NULL);
mciSendString("play A",0,0,0);
i=1;
break;
}
}
} 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询