How to disable beep sound when press key in MFC app?

HI Experst,
I have develop the MFC application that is not contains any editable control (it just contains frames/images/buttons control) so when I press any key it cause the sound as beep.

I need to disable this "BEEP" sound? how can I can do?
can we disable this? or can we add any "trick"  control to do this?
I have worked on this but I still can not find out how to disable
Pls give me your suggestion about how to disable this or give me some example for this.

Thank in advance!
LVL 1
MobinexAsked:
Who is Participating?
 
ZoppoConnect With a Mentor Commented:
Hi Mobinex,

I guess it's a dialog-application - even if it's a formview it should be the same ...

Just override your dialog's PreTranslateMessage and implement it somehow like this:

BOOL CMytDlg::PreTranslateMessage(MSG* pMsg)
{
      if ( pMsg->message == WM_KEYDOWN || pMsg->message == WM_KEYUP )
      {
            switch ( pMsg->wParam )
            {
            case( VK_RETURN ):
            case( VK_ESCAPE ):
            case( VK_SPACE ):
            case( VK_TAB ):
            case( VK_LEFT ):
            case( VK_RIGHT ):
            case( VK_UP ):
            case( VK_DOWN ):
                  {
                        break;
                  }
            default:
                  {
                        return TRUE;
                  }
            }
      }
      else if ( pMsg->message == WM_SYSKEYDOWN || pMsg->message == WM_SYSKEYUP )
      {
            switch ( pMsg->wParam )
            {
            case( 'S' ):
            case( 'T' ):
                  {
                        break;
                  }
            default:
                  {
                        return TRUE;
                  }
            }
      }


      return CDialog::PreTranslateMessage(pMsg);
}

This disables default handling of all keys except Space, Enter, ESC, TAB and the arrow keys ... in addition as a sample here all 'ALT+<key>' are blocked except for 'S' and 'T' - this should be done to avoid that pressing ALT-<key> beeps if it's not a shortcut in the dialog - for each shortcut in the dialog you need to add a 'case' in the 'else if' part ...

Hope that helps,

ZOPPO
0
 
DimkovCommented:
What I would do is catch the button press event. I think it was OnButtonDown.
When you will create this event, you will see code that usses the message to call another function,
for ex:  mainwindow::OnButtonDown, which means it propagates the message to the higher levels. All you need to do is to erase that code.

So when you press a button, your application will catch it with the event funtion, but will not do anything with it (including the beep signal)


Hope this helps

Dimkov
0
 
MobinexAuthor Commented:
yah,
Thank Zoppo, it worked.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.