2009-04-30 113 views
4

呼び出すとき:ボタンでメッセージボックスAfxMessageBoxを有効にする方法Yes/No(MB_YESNO) "閉じる"ボタン? (右上「X」)

AfxMessageBox(strMsg, MB_YESNO); 

を「はい」と「いいえ」が表示されます。しかし、右上隅の "X"(クローズボタン)は無効になっていて、ESCを押しても効果はありません。

唯一の有効な結果は、IDCANCELではなくIDYESとIDNOになるからです。

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

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

ファイルを削除するとき、確認を求めるダイアログには「はい」と「いいえ」だけが表示され、閉じるボタンまたはESCでキャンセルすることもできます。私はそれがカスタムダイアログだと思っています。

答えて

4

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

1

ハンスディートリッヒの無料XMessageBoxは、標準的なメッセージボックスの非常に機能豊富な拡張機能です。あなたはそれをチェックアウトすることがあります。

また、[キャンセル]ボタンを希望しない理由は分かりませんが、同じではあるが明示的ではないUI要素が必要です。

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

「いいえ」、私は「いいえ」悪いラベリング選択肢だと思います「キャンセル」と交換可能です場合。例:DeleteFolder()関数が尋ねるQ:

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

OTOH、 "ファイルを削除しますか?"ボタンがはい/いいえになるように見えます。しかし、私はOK/Cancelを好む。ユーザーからの詳細な情報ではなく、ユーザーの確認を求めるためです。そのような場合、エスケープキー/赤十字を使用することは確かにプラスです。

+1

「Xを削除してもよろしいですか?」という質問は、「いいえ」ボタンをクリックするのと同じですので、「キャンセル」ボタンは冗長です。 ESCは、キーボードを使いたいユーザーのためのものです。クローズボタン "X"を有効にしておくと意味があります。なぜなら、同じダイアログ内の別の場所で「いいえ」と答えることができるからです。 「いいえ」と「キャンセル」のボタンが互いに隣り合っていて、同じことをする場合、両方を持つことは意味がありません。 – rec

+1

問題は「いいえ」で、「キャンセル」は異なる回答です。彼らは似たような場合もありますが、それは保証されていません。 「空のフォルダ」機能の例:「サブフォルダも空にする必要がありますか?」、はい/いいえ。キャンセルは何も削除しません。はいといいえいくつかのものを削除しないでください。 –

関連する問題