「すべてはい」を作成するにはどうすればよいですか” WinAPIを使用するボタン?
質問
WinAPIを使用するCで記述されたレガシーアプリケーションがあります。 「すべてにイエス」を追加します。いくつかのダイアログボックスのボタン。残念ながら、既存のMessageBox関数では、カスタムボタンまたはボタンキャプションを使用できません。
これを行う最良の方法は何ですか?カスタムボタンを簡単に追加するための巧妙なハックはありますか?または、独自のMessageBox置換を作成する必要がありますか?
解決 4
独自のDIALOGEX置換リソーステンプレートの作成を終了し、DialogBox()を呼び出して戻り値を確認するだけです。
リファレンス: http://msdn.microsoft.com /library/ms644996(v=VS.85).aspx#modal_box
他のヒント
おそらくそのようなものですか? http://www.codeproject.com/KB/dialog/CRHYesNoToAllDialog.aspx
またはこれ: .NETでWindowsフックを使用してMessageBoxを強化する
マーク
Windows 2000以降、WinAPIには別の種類のメッセージボックスがあります。それは SHMessageBoxCheck
。
標準の MB_OKCANCEL
/ MB_YESNO
/ MB_OK
-type MessageBox
をオプションで表示できます。その場合のデフォルトオプションを指定することにより、二度と表示しないでください。
おそらく探しているものではないかもしれませんが、Windows UIとかなり一貫しています。
Vistaでは、ほとんどのシェルの「すべてはい」ダイアログは実際にはこのように機能します-「はい/いいえ」というボタンはありません。 -「すべてのアイテムで選択したアクションを実行する」があります。代わりにチェックボックス。
ただし、ドキュメントの注は心配しています:
この機能は、Microsoft Windows XPおよびWindows Server 2003を介して使用できます。Windowsの以降のバージョンでは変更されるか、使用できない場合があります。
MessageBox
のようにテキストの折り返しにも注意する必要がある場合があります。また、 MessageBox
は、デフォルトのGUIフォントとは異なるフォントを使用します。また、ダイアログが表示されたらサウンドを再生することを忘れないでください:)