2009-08-17 54 views
1

有沒有MessageBox可以返回0而不是沒有足夠內存的情況?我有一個案例,我懷疑我傳遞給MessageBox的HWND無效,或者它屬於正在銷燬的窗口。如果HWND很差,MessageBox返回0

在我的情況下,MessageBox不顯示並返回0,但我似乎有足夠的內存可用。

+0

GetLastError有幫助。它返回1400 - ERROR_INVALID_WINDOW_HANDLE,這是有道理的。我仍然有點困惑,因爲:: IsWindow在同一個句柄上返回TRUE – Tyler 2009-08-17 21:33:45

+0

如果窗口正在被銷燬的過程中,那麼即使窗口被部分銷燬並因此對您的目的沒有用處,IsWindow在技術上仍然可能是真實的。你嘗試過IsWindowVisible嗎? – jeffm 2009-08-17 21:38:44

+0

Both :: IsWindow和:: IsWindowVisible在MessageBox之前返回TRUE,在MessageBox之後返回FALSE。所以,我的結論是,MessageBox以某種方式允許窗口在創建之前完成銷燬 – Tyler 2009-08-17 21:43:28

回答

0

如果將NULL或GetDesktopWindow()作爲HWND參數傳遞,問題是否消失?如果是這樣,那麼你可能是正確的。您也可以嘗試使用IsWindow()或IsWindowVisible()函數提前驗證HWND。 (雖然我不確定這些功能的行爲是否可靠,如果有問題的窗口正在銷燬過程中)。