1. MessageBox 是Windows系統庫 user32.dll 的一個導出函數,用于顯示一個提示消息對話框,其原型定義如下 :
int MessageBox( HWND hWnd, // handle to owner window
LPCTSTR lpText, // text in message box
LPCTSTR lpCaption, // message box title
UINT uType // message box style );
可以看到有四個參數,第一個是消息框所有者視窗句柄,可以是NULL,第二個是 消息框的文本内容,第三個是消息框标題,第四個參數是消息框樣式(按鈕和圖示)。
2. CWnd類對MessageBox進行了封裝,對其第一個參數傳遞了CWnd類的成員變量 m_hWnd,
是以,調用CWnd類的成員函數MessageBox時,不能使用第一個參數,并且,最後兩個參數也有預設值。
3. AfxMessageBox 是應用程式架構函數,是一個全局的函數,其内部實作也是使用了MessageBox。
它有兩次重載,如下:int AfxMessageBox( LPCTSTR lpszText, UINT nType = MB_OK, UINT nIDHelp = 0 );
int AFXAPI AfxMessageBox( UINT nIDPrompt, UINT nType = MB_OK, UINT nIDHelp = (UINT) -1 );
lpszText 是消息框的内容;nType 與MessageBox中相同;nIDHelp 是幫助上下文ID,如果是0則使用預設的幫助上下文。
nIDPrompt 是一個資源中的字元串表中的字元串資源ID,可以使用一個字元串資源作為消息框的内容。
因為 MessageBox 是标準調用的DLL導出函數,是以可以在C代碼中使用,而 AfxMessageBox 則隻能在C++代碼中使用,一般都是在MFC程式中使用AfxMessageBox。
AfxMessageBox 内部處理了MessageBox的參數,然後調用 MessageBox來實作。而實際上MessageBox隻是一個宏,真正的函數是MessageBoxA和MessageBoxW,
這兩個函數都沒有提供控制其出現位置的參數,是以,不能控制其出現的位置。