【问题标题】:MessageDlg does not make soundMessageDlg 没有声音
【发布时间】:2016-12-09 14:25:48
【问题描述】:

我有以下代码:

IF MessageDlg('Delete?',mtConfirmation,[mbYes,mbNo],0) = MrYes THEN
Begin
///Do Something;
End
Else
Begin
///Do Something;
End;

StyleWindows 时,MessageDlg 函数播放声音,但如果我将Style 更改为Windows 10 为例,则声音不起作用。

  • 为什么我选择Style时声音不存在?

  • 我该如何解决这个问题?

注意:我正在开发 Delphi 10 Seattle

更新:

我尝试MessageBeep(MB_ICONQUESTION); David Heffernan 在他的回答中建议,但这也不会发出声音。

【问题讨论】:

    标签: delphi delphi-10-seattle


    【解决方案1】:

    当您使用 Windows 样式时,消息对话框由 Windows 消息对话框函数之一实现。这些将发出与对话类型匹配的标准系统声音。

    当您使用 VCL 样式时,VCL 代码负责对话框。它选择不发出系统声音。这只是使用 VCL 样式不精确地实现的众多细节中的另一个。如果您想在使用 VCL 样式时复制标准行为,则需要添加对 MessageBeep 的适当调用。

    【讨论】:

    • MessageBeep(MB_ICONQUESTION); 不发出标准系统声音
    • 我正在使用Windows 7,但它对我不起作用,MessageBeep(MB_ICONWARNING); 发出声音,但MessageBeep(MB_ICONQUESTION);
    • 呃,现在不确定你应该传递哪个值。我认为你应该玩弄你的声音并设置它们,以便你可以区分它们。查看 VCL 样式关闭时发出的声音,然后传递复制该声音的值。不管怎样,我相信你可以从这里拿走。
    • @Sami 使用MessageBeep(MB_ICONQUESTION); 不产生任何声音的最可能原因是因为您的窗口没有指定任何声音作为Windows Question 声音(这是默认情况下)。检查您的 Windows 声音设置以查看或编辑哪些通知分配了声音。
    【解决方案2】:

    为了补充大卫的答案,根据您的 Windows 版本,当前活动样式和其他检查 MessageDlg 函数是使用自定义 TForm em> 或使用 TTaskDialog 类(这是Windows Task Dialog 的包装器)。因此,作为解决方法,您可以直接使用 TTaskDialog 类并将Vcl.Styles.Hooks 单元添加到您的项目中以设置此类对话框的样式。

    uses
      Vcl.Styles.Hooks;
    
    procedure TForm56.Button1Click(Sender: TObject);
    var
     LTaskDialog : TTaskDialog;
    begin
      LTaskDialog := TTaskDialog.Create(Self);
      try
        LTaskDialog.Caption := 'Confirm';
        LTaskDialog.Text := 'Delete ?';
        LTaskDialog.CommonButtons := [tcbYes, tcbNo];
        LTaskDialog.MainIcon := tdiInformation;
        if LTaskDialog.Execute then
          if LTaskDialog.ModalResult = mrYes then
          begin
    
    
          end;
      finally
        LTaskDialog.Free;
      end;
    

    【讨论】:

      猜你喜欢
      • 2017-03-16
      • 2017-10-19
      • 2021-04-22
      • 2016-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多