1-1学习MFC之消息对话框
2015-01-04 16:39
381 查看
最近在学习MFC,练习环境为经典的VC++6.0
Windows开发中经常用到消息对话框,所以先拿这个练练说。但MFC中的消息对话框,学问还挺多。
先一步步建工程。工程名就是MessageBox。
![](http://img.blog.csdn.net/20150104164526341?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzY3NzE1Ng==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
简单起见,这里使用基本对话框类型,并使用一些默认设置,所以可以直接点“完成”。
![](http://img.blog.csdn.net/20150104164628468?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzY3NzE1Ng==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
CN情怀,把它默认提供的一些东西删除。这时我们的程序编译并运行是可以的,只是我们没有在上面添加任何控件和代码,自然这个程序也毫无用处。
![](http://img.blog.csdn.net/20150104164645994?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzY3NzE1Ng==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
在窗口中加入一个“按钮”(BUTTON),右击选择属性,将其标题改为“CWnd::messageBox”。(标题-caption,只影响按钮的显示,不影响程序运行。你们可以改为自己喜欢的文字)。
![](http://img.blog.csdn.net/20150104164742953?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzY3NzE1Ng==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
双击这个按钮,弹出“添加成员函数”的对话框。点击“OK”,可跳转掉代码编辑页面。
![](http://img.blog.csdn.net/20150104164826015?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzY3NzE1Ng==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
在CMessageBoxDlg::OnButton1()函数中添加这么一句话:
CWnd::MessageBox("这是一个CWnd::MessageBox","标题",MB_OK);
编译、链接和运行,点击按钮,显示如下:
![](http://img.blog.csdn.net/20150104164914678?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzY3NzE1Ng==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
同样的,在对话框中加入另外一个Button,标题为API::MessageBox。
为这个Button添加成员函数,在函数中输入:
::MessageBox(0,"这是一个API::MessageBox","API",MB_OK);
![](http://img.blog.csdn.net/20150104164945816?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzY3NzE1Ng==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
同样的,我们再次添加一个Button,标题改为AfxMessageBox,添加函数,函数中加入语句:
AfxMessageBox("AfxMessageBox", MB_OK);
![](http://img.blog.csdn.net/20150104165019918?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzY3NzE1Ng==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
整个VC工程压缩文件夹:http://pan.baidu.com/s/1nt4yURv
关于这三个MessageBox的区别和联系。
MessageBox是标准的win32API函数,AfxMessageBox是MFC中的全局函数。同时,MFC对MessageBox进行了封装,使它成了CWnd的一个成员函数。
标准API中,MessageBox带四个参数。
int MessageBox(
HWND hWnd, // handle ofowner window
LPCTSTR lpText, // address oftext in message box
LPCTSTR lpCaption, // address of title of message box
UINT uType // style ofmessage box
);
MFC中MessageBox的定义:
CWnd::MessageBox
int MessageBox(
LPCTSTR lpszText,
LPCTSTR lpszCaption =NULL,
UINT nType = MB_OK
);
可以看出,它是CWnd的一个成员函数,少了第一个参数,第三、四个参数有了默认值。
AfxMessageBox的函数原型(两个重载函数
int AfxMessageBox( LPCTSTR lpszText, UINTnType = MB_OK, UINT nIDHelp = 0 );
int AFXAPI AfxMessageBox( UINT nIDPrompt, UINTnType = MB_OK, UINT nIDHelp = (UINT) –1 );
MessageBox中的uType和AfxMessageBox中的nType都表示对话框的按钮风格和图标样式。
MessageBox中的按钮风格
图标样式
参考资料:
http://baike.baidu.com/link?url=xg-JiK6gnz_iF770esl7JkPRBmW17fERRkXVaPvg1iV9ZeL0j8feIlFxc7nF0Mi70hEv1ergwGovyZxxuXtpYq http://baike.baidu.com/link?url=oyip1Vk8QRzXDeRjuS_TxwRRttxnuixt8oxcIg4LmFY30Px2YOHYQTwDxN4v4sMYqdKNj6wsuLayv0A8q14Ata http://blog.csdn.net/xhhjin/article/details/6456205
Windows开发中经常用到消息对话框,所以先拿这个练练说。但MFC中的消息对话框,学问还挺多。
先一步步建工程。工程名就是MessageBox。
简单起见,这里使用基本对话框类型,并使用一些默认设置,所以可以直接点“完成”。
CN情怀,把它默认提供的一些东西删除。这时我们的程序编译并运行是可以的,只是我们没有在上面添加任何控件和代码,自然这个程序也毫无用处。
在窗口中加入一个“按钮”(BUTTON),右击选择属性,将其标题改为“CWnd::messageBox”。(标题-caption,只影响按钮的显示,不影响程序运行。你们可以改为自己喜欢的文字)。
双击这个按钮,弹出“添加成员函数”的对话框。点击“OK”,可跳转掉代码编辑页面。
在CMessageBoxDlg::OnButton1()函数中添加这么一句话:
CWnd::MessageBox("这是一个CWnd::MessageBox","标题",MB_OK);
编译、链接和运行,点击按钮,显示如下:
同样的,在对话框中加入另外一个Button,标题为API::MessageBox。
为这个Button添加成员函数,在函数中输入:
::MessageBox(0,"这是一个API::MessageBox","API",MB_OK);
同样的,我们再次添加一个Button,标题改为AfxMessageBox,添加函数,函数中加入语句:
AfxMessageBox("AfxMessageBox", MB_OK);
整个VC工程压缩文件夹:http://pan.baidu.com/s/1nt4yURv
关于这三个MessageBox的区别和联系。
MessageBox是标准的win32API函数,AfxMessageBox是MFC中的全局函数。同时,MFC对MessageBox进行了封装,使它成了CWnd的一个成员函数。
标准API中,MessageBox带四个参数。
int MessageBox(
HWND hWnd, // handle ofowner window
LPCTSTR lpText, // address oftext in message box
LPCTSTR lpCaption, // address of title of message box
UINT uType // style ofmessage box
);
MFC中MessageBox的定义:
CWnd::MessageBox
int MessageBox(
LPCTSTR lpszText,
LPCTSTR lpszCaption =NULL,
UINT nType = MB_OK
);
可以看出,它是CWnd的一个成员函数,少了第一个参数,第三、四个参数有了默认值。
AfxMessageBox的函数原型(两个重载函数
int AfxMessageBox( LPCTSTR lpszText, UINTnType = MB_OK, UINT nIDHelp = 0 );
int AFXAPI AfxMessageBox( UINT nIDPrompt, UINTnType = MB_OK, UINT nIDHelp = (UINT) –1 );
MessageBox中的uType和AfxMessageBox中的nType都表示对话框的按钮风格和图标样式。
MessageBox中的按钮风格
按钮参数 | 含义 |
MB_OK | 默认值。有一个确认按钮在里面。 |
MB_YESNO | 有是和否在里面。 |
MB_ABORTRETRYIGNORE | 有Abort(放弃),Retry(重试)和Ignore(跳过) |
MB_YESNOCANCEL | 消息框含有三个按钮:Yes,No和Cancel |
MB_RETRYCANCEL | 有Retry(重试)和Cancel(取消) |
MB_OKCANCEL | 消息框含有两个按钮:OK和Cancel |
参数 | 含义 |
MB_ICONEXCLAMATION | 一个惊叹号出现在消息框 |
MB_ICONWARNING | 一个惊叹号出现在消息框 |
MB_ICONINFORMATION | 一个圆圈中小写字母i组成的图标出现在消息框 |
MB_ICONASTERISK | 一个圆圈中小写字母i组成的图标出现在消息框 |
MB_ICONQUESTION | 一个问题标记图标出现在消息框 |
MB_ICONSTOP | 一个停止消息图标出现在消息框 |
MB_ICONERROR | 一个停止消息图标出现在消息框 |
MB_ICONHAND | 一个停止消息图标出现在消息框 |
http://baike.baidu.com/link?url=xg-JiK6gnz_iF770esl7JkPRBmW17fERRkXVaPvg1iV9ZeL0j8feIlFxc7nF0Mi70hEv1ergwGovyZxxuXtpYq http://baike.baidu.com/link?url=oyip1Vk8QRzXDeRjuS_TxwRRttxnuixt8oxcIg4LmFY30Px2YOHYQTwDxN4v4sMYqdKNj6wsuLayv0A8q14Ata http://blog.csdn.net/xhhjin/article/details/6456205
相关文章推荐
- MFC学习笔记(二):消息对话框的两个函数用法与区别
- 2007.3.7--C++学习日记--MFC--用VC调用Shell中的目录浏览对话框
- VC学习一日一练(2)---MFC中自定义消息
- 重新开始vc6/mfc学习——3.定时器、对话框以及菜单的初步使用
- MFC 下对话框程序使用消息
- opencv [c++版] 学习笔记(2) 在MFC基于对话框界面上播放视频
- MFC学习之模式对话框设计
- MFC学习笔记之:VC6.0中通过向导添加的消息响应系统自动添加的代码及删除方式
- MFC对话框程序中添加工具栏及工具栏上的Button响应UPDATE_COMMAND_UI消息
- MFC消息传递(单文档与对话框)
- MFC学习之五:自定义消息
- MFC控件篇之对话框中的消息与数据
- MFC对话框消息传递顺序
- MFC的消息机制学习
- MFC对话框消息传递顺序
- [学习]MFC对话框程序改为无模式对话框
- 转《MFC对话框消息传递顺序》
- 学习一下如何自定义Windows MFC消息
- MFC对话框程序中添加工具栏及工具栏上的Button响应UPDATE_COMMAND_UI消息
- MFC学习笔记之:创建模态对话框和非模态对话框