2012-01-13 57 views
4

我已經在VC++中創建了一個應用程序,問題是如果發生錯誤,我顯示MessageBox。但該MessageBox不顯示在前面。我必須按ALT鍵才能成爲該應用程序的前面。我的應用程序變爲無效,直到我按ALT。並在MessageBox上按OK。MFC MessageBox不能顯示在所有窗口頂部

這裏是代碼附加。

MessageBox(NULL,"Invalid File, Parsing is going to be terminate"); 

AfxMessageBox("Win32 MessageMessage",MB_OK | MB_ICONEXCLAMATION | MB_TOPMOST);

我西港島線,如果有人可以幫助我

+2

您使用哪一個? 'MessageBox'或'AfxMessageBox'?如果你同時使用......那麼,爲什麼你使用兩者? – 2012-01-13 10:17:27

+1

你是從另一個線程調用這個嗎?如果使用Win32 API版本,則必須傳遞父窗口的句柄。 – zar 2012-01-13 15:29:34

+0

代碼灰色:我已經使用它們,他們都表現得像相同,我有從對話類繼承的父活動,並且我使用OpenGL窗口在它..我得到如何使用Windows處理程序的禮儀方式。如果我把:: getWindows()作爲第一個參數,它不會編譯。請幫助我 – DareDevil 2012-01-16 07:49:20

回答

1

您需要通過手柄在屏幕上顯示消息框, 你可以使用HWND WINAPI GetDesktopWindow(無效)非常感謝;函數來獲取桌面句柄並將其傳遞給MessageBox()函數。

您可以從

http://msdn.microsoft.com/en-us/library/windows/desktop/ms633504%28v=vs.85%29.aspx

得到更多的幫助GetDesktopWindoe檢索的句柄桌面窗口。桌面窗口覆蓋整個屏幕。桌面窗口是在其上面繪製其他窗口的區域。所以這也適用於OpenGL。

+0

我已經這樣做了。現在當我按任何特定的對話框窗口中的按鈕,它顯示在前面。謝謝回覆 – DareDevil 2012-12-17 12:32:31