5

電話をかけるとき:

AfxMessageBox(strMsg, MB_YESNO);

「はい」と「いいえ」のボタンが付いたメッセージボックスが表示されます。ただし、右上隅の「X」(閉じるボタン)は無効になっており、ESCを押しても効果はありません。

これは、有効な結果がIDYESとIDNOのみであり、IDCANCELではないためです。

この動作を有効にする簡単な方法はありますか?避けたいこと:

  • このためのカスタムダイアログを作成します。
  • はい/いいえ/キャンセルボタンがあります。

ビスタでは、ファイルを削除するときに、確認を求めるダイアログには「はい」と「いいえ」しかなく、閉じるボタンまたはESCを使用してキャンセルすることもできます。カスタムダイアログだと思います。

4

2 に答える 2

4

AfxMessageBox() はMessageBox()を内部的に呼び出すだけです。いいえ、ボタンを追加する MB_YESNOCANCEL を使用しないと、ここで必要な動作を取得できません...

于 2009-04-30T23:06:33.970 に答える
1

そうであれば問題ありませんが、Hans Dietrichの無料のXMessageBoxは、標準のメッセージボックスの非常に機能豊富な拡張機能です。あなたはそれをチェックしたいかもしれません。

また、[キャンセル]ボタンが必要ないのに、同じことを実行するがそれほど明示的ではないUI要素が必要な理由がよくわかりません。

編集:あなたのコメントに答える:

「いいえ」が「キャンセル」と互換性がある場合、「いいえ」は不適切なラベル付けの選択だと思います。例:DeleteFolder()関数によって尋ねられるQ:

「サブフォルダも空にする必要がありますか?」明らかに、noとCancel/Escapeは同じ意味ではありません。

OTOH、「ファイルを削除しますか?」ボタンは「はい/いいえ」である必要があるようです。しかし、私はOK/キャンセルを好みます。ユーザーからの詳細情報ではなく、ユーザーの確認を求めるためです。そのような場合、エスケープキー/赤十字が機能することは確かにプラスです。

于 2009-05-05T21:21:34.833 に答える