WinAPIを使用するCで書かれたレガシーアプリケーションがあります。いくつかのダイアログボックスに「Yes to All」ボタンを追加したいと思います。残念ながら、既存のMessageBox関数では、カスタムボタンやボタンのキャプションは使用できません。WinAPIを使用して「はい」ボタンを作成するにはどうすればよいですか?
どうすればよいですか?カスタムボタンを簡単に追加するための滑らかなハックはありますか?または、独自のMessageBox置換を作成する必要がありますか?
WinAPIを使用するCで書かれたレガシーアプリケーションがあります。いくつかのダイアログボックスに「Yes to All」ボタンを追加したいと思います。残念ながら、既存のMessageBox関数では、カスタムボタンやボタンのキャプションは使用できません。WinAPIを使用して「はい」ボタンを作成するにはどうすればよいですか?
どうすればよいですか?カスタムボタンを簡単に追加するための滑らかなハックはありますか?または、独自のMessageBox置換を作成する必要がありますか?
私たちは独自のDIALOGEX置換リソーステンプレートを作成して終了し、単にDialogBox()を呼び出して戻り値を確認しました。
参考:http://msdn.microsoft.com/library/ms644996(v=VS.85).aspx#modal_box
Windows 2000ではこれのSHMessageBoxCheck
以来、WinAPIのでメッセージボックスの別の種類は、あります。
それはあなたが、その場合のデフォルトのオプションがある指定することによって、再びそれを表示しない場合はオプションでMessageBox
型MB_OKCANCEL
/MB_YESNO
/MB_OK
標準を表示することができます。
おそらく、あなたが探しているものではないかもしれませんが、WindowsのUIとかなり一致しています。
Vistaでは、ほとんどのシェルの「はい」が実際にこのように動作します。「はい/いいえ全員」というボタンはありません。代わりに「すべての項目に対して選択した処理を実行する」チェックボックスがあります。
しかしマニュアルの注意は私を心配:この機能は、Microsoft Windows XPおよびWindows Server 2003によってそれが変更される可能性がありますまたはWindowsのそれ以降のバージョンでは利用できない可能です。
あなたはまたMessageBox
と、それは似て作るためにテキストの折り返しの世話をする必要があるかもしれません。また、MessageBox
は、デフォルトのGUIフォントとは異なるフォントを使用します。ダイアログがポップアップしたときにサウンドを再生することを忘れないでください:)
ええと、ボタンを作成して "Yes To All"というキャプションを付けますか?私はあなたがもう少し具体的である必要があると思う。 –
WinAPIのMessageBoxは、自分のボタンを作成してカスタムのキャプションを与えることはできません。それが私が試みた最初のことでした。 – Brown
MessageBox()をカスタマイズすることができます。 SetWindowsHookEx()を使用して、MessageBox()を呼び出す直前にスレッド固有のCBTフックをインストールします。フックがトリガされると、ダイアログのHWNDにアクセスできます。子コントロールを追加したり、コントロールを移動したり、テキストを変更したりできます。 –