我想得到键盘按下和抬起的消息
BOOL CtempiDlg::PreTranslateMessage(MSG *pMsg)
{
//TODO : Add your specialized code here and /or call the base class if(   pMsg->message   ==   WM_KEYDOWN )   
{         
switch(pMsg->wParam)   
{   
case   81:   
AfxMessageBox("q");break;   
case   82:   
AfxMessageBox("r");break;   
case   83:   
AfxMessageBox("s");break;   
return  TRUE;
}
}

if(  pMsg->message  ==  WM_KEYUP)
{

switch(pMsg->wParam)
{   
case 81:   
AfxMessageBox("q1");break;   
case 82:   
AfxMessageBox("r1");break;   
case 83:   
AfxMessageBox("s1");break;   
return TRUE;

}
} return CDialog::PreTranslateMessage(pMsg);
}
编译和运行都可以通过,当我按下q的时候弹出一个对话框,但是松手的时候却没有反映,如果注释掉
pMsg->message   ==   WM_KEYDOWN语句,pMsg->message   ==   WM_KEYUP就有效果了,按下Q的时候没有反映,抬起的时候有对话框弹出,是不是这个两个键盘消息有什么冲突啊,不能一起反映,如果我想按下一个键盘键值的时候,运行指定程序,抬起的时候运行另外的程序,怎么处理这个消息啊!
还有我想问一下,怎么去掉按下键盘时的系统连续出现的声音,变成无声的。

解决方案 »

  1.   

    松手的时候肯定没反应的,因为你弹出一个对话框,此时焦点在弹出的对话框上
    楼主试试不要用弹出对话框,用TRACE代替在debug模式下看看,既有ouput窗口输出,也会响应KEYUP消息
      

  2.   

    因为你按下的时候
    焦点已经转移到MessageBox上了,当然就不响应WM_KEYUP
      

  3.   

    不要用AfxMessageBox测试,弹出时候会抢占焦点
      

  4.   

    http://community.csdn.net/Expert/topic/4904/4904752.xml?temp=.431225
      

  5.   

    如果没有MessageBox了还会有那声音吗/?