2009-04-30 160 views
4

當調用:如何啓用AfxMessageBox是/否(MB_YESNO)「關閉」按鈕? (右上角的「X」)

AfxMessageBox(strMsg, MB_YESNO); 

一個消息框與按鈕「是」和「否」的顯示。但是右上角的「X」(關閉按鈕)被禁用,按ESC不起作用。

這是因爲唯一有效的結果是IDYES和IDNO,而不是IDCANCEL。

是否有快速獲取此行爲的方法? 我想避免:

  • 爲此創建一個自定義對話框。
  • 有是/否/取消按鈕。

在Vista中,刪除文件時,要求確認的對話框只有「是」和「否」,也可以用關閉按鈕或ESC取消。我猜這是一個自定義對話框。

回答

4

AfxMessageBox()在內部調用MessageBox()。所以,不,你不能在沒有使用MB_YESNOCANCEL的情況下獲得你想要的行爲,而不使用添加按鈕的MB_YESNOCANCEL ...

1

不是sre如果那樣做,但是Hans Dietrich的免費XMessageBox是標準消息框的一個功能非常豐富的擴展。你可能想喲檢查出來。

此外,我不太明白爲什麼你不想要一個取消按鈕,但想要一個UI元素,但沒有完全一樣明確。

編輯:回答您的評論:

如果「不」是「取消」,那麼我想互換「不」是一個壞標籤的選擇。例如:Q通過DeleteFolder()函數詢問:

「我還應該清空子文件夾嗎?」。顯然,不和Cancel/Escape不具有相同的含義。

OTOH,「刪除文件?」看起來像按鈕應該是/否。但我更喜歡OK/Cancel。因爲您要求用戶確認,而不是來自用戶的更多信息。在這種情況下,使用Escape鍵/紅十字工作當然是一個優點。

+1

我認爲當問題是「你確定要刪除項目X」時,「取消」按鈕是多餘的,因爲它與單擊「否」按鈕相同。 ESC適合喜歡使用鍵盤的用戶。啓用關閉按鈕「X」只是有意義的,因爲它允許回答「否」,但在同一個對話框的不同位置。如果按鈕「否」和「取消」彼此相鄰並且它們相同,則兩者都沒有意義。 – rec 2009-05-06 18:57:01

相關問題