kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

ペイントの確認ダイアログで音が鳴らないのはなぜ?

Windows 7 のペイントでは保存せずに閉じても警告音が鳴りません: 世の中は不思議なことだらけ
さくしまさんのところで面白い話題が出ていたので、ちょっとだけ確認してみました。私は普段音を出していないので気付いていませんでした。まず一言で言ってしまうと、「仕様」かもしれません。UI的には出てくれてもいいかなとは思います。
で、以下はプログラマじゃないと分かんないところがありますので、ああそうなのかという程度で。まず、見掛けを確認すると、そもそもWordとメモ帳では最後に表示される確認ダイアログが異なっています。
メモ帳。

Word 2007。

Word 2007はおそらくMessageBox(もしくはMessageBoxEx)という、Windows伝統のAPI(命令)を使って表示しているのでしょう。これを使った場合、さくしまさんも書かれているように、Windowsのサウンドで割りつけられた音が鳴るという仕様になっています。ところが、メモ帳のほうは見た目が違います。これをちょっとSPY++(開発者向けツール)でのぞいてみましょう。

何やらDirectXっぽいもので描画していそうです。同じく開発者ツールであるUISpyでダイアログの構造をのぞいてみましょう。
Wordが出しているダイアログ。

メモ帳が出しているダイアログ。

ちょっとわかりにくいかもしれませんが、構造が少し違っています。違うメッセージ表示の仕組みを使っているんですね。おそらくWindows 7に付属している方はTaskDialogという別のAPIを使っているんじゃないかなと想像しています。そしてこのAPIを使った場合、システムサウンドが出ないんでしょう。