2008-10-06 81 views

回答

1

@ffpf說,你需要使自己的對話框做到這一點,使用MFC,ATL,原Win32中,等

然後創建一個計時器,將啓用和禁用按鈕。

0

使用標準的MessageBox調用,你不能。你需要實現你自己的MessageBox才能做到這一點。

0

我不認爲這是可能的標準消息框調用。

您可能會更好地編寫包含此功能的自己的消息框。 (或者,你可以編寫一個單獨的線程,持續觀看等待消息框出現的屏幕,禁用重試按鈕,等待10秒鐘並重新啓用它,不好玩,嚴重的是,以其他方式做)。

0

由於Vista可以使用taskdialog - 比簡單的消息框更復雜的對話框。更多的信息和鏈接here

+0

即使沒有Vista,任務對話框也比消息框更好。在Vista之前的系統中有一些實現可以使用,如果你不需要一次性使用所有的功能,那麼實現它也不難。 – OregonGhost 2008-10-06 20:47:02

1

您不能直接操縱MessageBox控件,但可以使用黑客。在顯示對話框並處理HCTIVATE事件之前安裝WH _ CBT掛鉤。這將爲您提供消息框的HWND,以便您可以隨心所欲地執行任何操作(對其進行子類化,管理其按鈕並設置定時器)。

您可以在James Brown的網站上找到帶有演示代碼的Custom MessageBox教程。

0

我同意efotinis,這是不可能的,一旦你有了HWND,你可以隨心所欲地做任何事情。這只是一個問題:「你真的需要黑客嗎?還是隻需創建自己的消息框對話框,你會更好?」

另一種不太好的方式找到HWND(這顯然會讓你訪問消息框中的eveything)將啓動一個線程並通過使用EnumChildWindows ciclically輪詢消息框句柄。但我個人更喜歡WH_CBT鉤子。