2010. január 22., péntek

How to have MessageDlg() play the corresponding sound


Problem/Question/Abstract:

How to have MessageDlg() play the corresponding sound

Answer:

Application.MessageBox() and the Windows API function MessageBox() each play the system sound associated with the type of the message, but the VCL function MessageDlg does not. You have to call the API function MessageBeep() before you call MessageBox().

Replace your calls to MessageDlg() with MessageDlgSound() from the example below.

  
function MessageDlgSound(const Msg: string;
  DlgType: TMsgDlgType;
  Buttons: TMsgDlgButtons;
  HelpCtx: Longint): Word;
const
  Sounds: array[TMsgDlgType] of integer = (
    MB_ICONEXCLAMATION, MB_ICONHAND, MB_OK, MB_ICONQUESTION, MB_ICONASTERISK);
begin
  MessageBeep(Sounds[DlgType]);
  Result := MessageDlg(Msg, DlgType, Buttons, HelpCtx);
end;

Nincsenek megjegyzések:

Megjegyzés küldése