win32 MessageBox消息对话框和MFC AfxMessageBox消息对话框

前言:      

        win32只能使用MessageBox对话框,而MFC可以使用这两种。

                           1.    CWnd::MessageBox

(1)函数原型:
         int CWnd::MessageBox( LPCTSTR lpszText, LPCTSTR lpszCaption = NULL, UINT nType= MB_OK );

        VS对MessageBox的宏定义:

WINUSERAPI
int
WINAPI
MessageBoxA(
    __in_opt HWND hWnd,
    __in_opt LPCSTR lpText,
    __in_opt LPCSTR lpCaption,
    __in UINT uType);
WINUSERAPI
int
WINAPI
MessageBoxW(
    __in_opt HWND hWnd,
    __in_opt LPCWSTR lpText,
    __in_opt LPCWSTR lpCaption,
    __in UINT uType);
#ifdef UNICODE
#define MessageBox  MessageBoxW
#else
#define MessageBox  MessageBoxA
#endif // !UNICODE

 

(2)参数:

lpszText指向一个CString对象或以null结尾的字符串,其中包含了要显示的信息。
lpszCaption指向一个CString对象或以null结尾的字符串,被用作消息框标题。如果lpszCaption为NULL,则将使用缺省的题“Error”。
nType指定了消息框的内容和行为。

(3)按钮的形式:  

MB_OK 默认值,OK确认按钮。
MB_YESNO YES,NO按钮
MB_ABORTRETRYIGNORE Abort(放弃),Retr(重试),Ignore(忽略)
MB_YESNOCANCEL YES,NO,CANCEL按钮
MB_RETRYCANCELRetry(重试),Cancel(取消)
MB_OKCANCELOK,Cancel按钮

(4)返回值:

        指定了函数的结果。如果没有足够的内存以创建消息框,则返回0。 
        如果函数成功,并且消息框有对应的按钮,则返回值是下列菜单项的值之一。 

返回值按钮选中情况
IDABORTAbort按钮被选中。
IDCANCELCancel按钮被选中。
IDCONTINUEContinue按钮被选中。
IDIGNOREIgnore按钮被选中。
IDNONo按钮被选中。
IDOKOK按钮被选中。
IDRETRYRetry按钮被选中。
IDYESYes按钮被选中。


         
         
         
         
         
        
         
       
 

 




(5)消息框图标:
        这个函数创建并显示一个窗口,其中包含了应用程序提供的消息和标题,加上预定义的图标和按钮的组合,这些定义在消息框风格列表中。使用全局函数AfxMessageBox代替这个成员函数来为你的应用程序实现消息框。
下面显示了可以被用在消息框中的不同的系统图标:

MB_ICONHAND,MB_ICONSTOP和MB_ICONERROR
MB_ICONQUESTION
MB_ICONEXCLAMATION和MB_ICONWARNING
MB_ICONASTERISK和MB_ICONINFORMATION

(6)示例:

void CMesBoxDemoDlg::OnBnClickedMesbox()
{
	CString strText = _T("这是一个消息对话框!");
	CString strCaption = _T("消息!");
	int nType = MessageBox(strText, strCaption, MB_ICONINFORMATION | MB_OKCANCEL);

	if ( nType == IDOK )
	{
		MessageBox(_T("消息对话框点击了OK按钮!"), _T("来自上一个消息对话框的消息!"), MB_ICONINFORMATION | MB_OKCANCEL);
	}
}

效果图:

 

/*==========================================================================================*/

/*==========================================================================================*/

                               2.    AfxMessageBox

 
(1)函数原型:
        int AFXAPI AfxMessageBox( LPCTSTR lpszText, UINT nType = MB_OK, UINT nIDHelp =0 );
        int AFXAPI AfxMessageBox( UINT nIDPrompt, UINT nType = MB_OK, UINT nIDHelp = (UINT) -1 );

(2)参数:

lpszText指向一个CString对象或者以null结尾的字符串,包含了要在消息框中显示的信息。
nType消息框的风格。对对话框应用任何一种消息框风格。
nIDHelp消息的帮助上下文ID。0表示将使用应用程序的缺省帮助上下文。
nIDPrompt用于引用字符串表中的字符串的唯一的ID。

(3)返回值:
        如果没有足够的内存来显示消息框就返回零,否则可能是下列值之一:

·IDABORT选择了Abort按钮。
·IDCANCEL选择了Cancel按钮。
·IDIGNORE选择了Ignore按钮。
·IDNO选择了No按钮。
·IDOK选择了OK按钮。
·IDRETRY选择了Retry按钮。
·IDYES选择了Yes按钮。

        如果消息框具有Cancel按钮,那么当按下了ESC键或者是选择了Cancel按钮时,就会返回IDCANCEL值。如果消息框没有Cancel按钮,按下ESC键没有任何效果。
        在格式化消息框中显示的字符串时,函数AfxFormatString1和AfxFormatString2非常有用。

(4)说明:
        ①在屏幕上显示一个消息框,这个重载函数的第一种形式在消息框中显示由lpszText指向的文本字符串,并使用nIDHelp来描述帮助上下文。当用户按下了帮助键(通常是F1)时,帮助上下文被用来跳转到相关的帮助主题。
        ②函数的第二种形式使用nIDPrompt所代表的字符串资源来在消息框中显示一个消息。相关的帮助页面通过nIDHelp的值来查找。如果使用了nIDHelp的缺省值(-1),则帮助上下文将使用字符串资源ID,即nIDPrompt。有关定义帮助上下文的更多信息参见《Visual C++程序员指南》中的“帮助主题”一文以及Visual C++联机文档中的“技术注释28”。
        ③消息框标题为项目名称。

(5)示例:

void CMesBoxDemoDlg::OnBnClickedMesbox()
{
	AfxMessageBox(_T("消息1"));

	char *pszMsg = "消息2";
	AfxMessageBox(pszMsg);

	CString strMsg("消息3");
	AfxMessageBox(strMsg);
}

效果图:

 

 

 

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页