有办法让TaskMessageDlg停止发出声音吗?

问题描述 投票:0回答:1

我想显示带有信息图标的 TaskMessageDlg,但我不希望发出蜂鸣声。可能吗?

delphi winapi dialog delphi-10.3-rio
1个回答
6
投票

我想显示带有信息图标的 TaskMessageDlg,但我不希望发出蜂鸣声。

事实上,你可能不知道。 Windows Vista 中引入的任务对话框的优点在于,如果开发人员正确使用它们,它们可以在平台上提供熟悉、一致且易于访问的用户体验。

此用户体验的一部分是使用标准系统图标及其相关声音,可由最终用户配置。

对于视障用户来说,声音实际上可能很重要。如果某个特定的最终用户不喜欢这些声音,那么他可以在操作系统中禁用它们。

可以吗?

TaskMessageDlg
只是在 VCL 应用程序中显示任务对话框的一种方法,因此让我们将问题扩展到一般任务对话框。

是的,这是有可能的。不要使用

TD_INFORMATION_ICON
标准图标,而是使用自定义图标。例如,您可以使用 Print Screen 和 Microsoft Paint 创建 BMP 文件,并在桌面上显示图标。或者,您可以使用
LoadIcon
LoadIconWithScaleDown
或(恐怖!)手动挖掘
User32.dll
来提取系统图标。


作为概念证明:

  with TTaskDialog.Create(nil) do
    try
      Title := 'Too many frogs have been created.';
      CommonButtons := [tcbOk];
      Flags := [tfUseHiconMain, tfAllowDialogCancellation];
      CustomMainIcon.Handle := LoadIcon(0, IDI_INFORMATION);
      Execute;
    finally
      Free;
    end;
© www.soinside.com 2019 - 2024. All rights reserved.