Visual C /MFC入门教程(五)
2008-02-23 05:23:45来源:互联网 阅读 ()
5.1 使用资源编辑器编辑对话框
在Windows研发中弹出对话框是一种常用的输入/输出手段,同时编辑好的对话框能够保存在资源文档中。Visual C 提供了对话框编辑工具,利用编辑工具能够方便的添加各种控件到对话框中,而且利用ClassWizard能够方便的生成新的对话框类和映射消息。
首先资源列表中按下右键,能够在弹出菜单中选择“插入对话框”,如图1。然后再打开该对话框进行编辑,您会在屏幕上看到一个控件板,如图2。您能够将所需要添加的控件拖到对话框上,或是先选中后再在对话框上用鼠标画出所占的区域。
接下来我们在对话框上产生一个输入框,和一个用于显示图标的图片框。之后我们使用鼠标右键单击产生的控件并选择其属性,如图3。我们能够在属性对话框中编辑控件的属性同时也需要指定控件ID,如图4,假如在选择对话框本身的属性那么您能够选择对话框的一些属性,包括字体,外观,是否有系统菜单等等。最后我们编辑图片控件的属性,如图5,我们配置控件的属性为显示图标并指明一个图标ID。
接下来我们添加一些其他的控件,最后的效果如图6。按下Ctrl-T能够测试该对话框。此外在对话框中更有一个有用的特性,就是能够利用Tab键让输入焦点在各个控件间移动,要达到这一点首先需要为控件配置在Tab键按下时能够接受焦点移动的属性Tab Stop,假如某一个控件不打算利用这一特性,您需要清除这一属性。然后从菜单“Layout”选择Tab Order来确定焦点移动顺序,如图7。使用鼠标依此点击控件就能够重新规定焦点移动次序。最后按下Ctrl-T进行测试。
最后我们需要为对话框产生新的类,ClassWizard能够替我们完成大部分的工作,我们只需要填写几个参数就能够了。在编辑好的对话框上双击,然后系统回询问是否添加新的对话框,选择是并在接下来的对话框中输入类名就能够了。ClassWizard会为您产生所需要的头文档和CPP文档。然后在需要使用的地方包含相应的头文档,对于有模式对话框使用DoModal()产生,对于无模式对话框使用Create()产生。相关代码如下
void CMy51_s1View::OnCreateDlg() {//产生无模式对话框 CTestDlg *dlg=new CTestDlg; dlg->Create(IDD_TEST_DLG); dlg->ShowWindow(SW_SHOW); } void CMy51_s1View::OnDoModal() {//产生有模式对话框 CTestDlg dlg; int iRet=dlg.DoModal(); TRACE("dlg return %d\n",iRet); }
下载例子。假如您在调试这个程式时您会发现程式在退出后会有内存泄漏,这是因为我没有释放无模式对话框所使用的内存,这一问题会在以后的章节5.3 创建无模式对话框中专门讲述。
关于在使用对话框时Enter键和Escape键的处理:在使用对话框是您会发现当您按下Enter键或Escape键都会退出对话框,这是因为Enter键会引起CDialog::OnOK()的调用,而Escape键会引起CDialog::OnCancel()的调用。而这两个调用都会引起对话框的退出。在MFC中这两个成员函数都是虚拟函数,所以我们需要进行重载,假如我们不希望退出对话框那么我们能够在函数中什么都不做,假如需要进行检查则能够添加检查代码,然后调用父类的OnOK()或OnCancel()。相关代码如下;
void CTestDlg::OnOK() { AfxMessageBox("您选择确定"); CDialog::OnOK(); } void CTestDlg::OnCancel() { AfxMessageBox("您选择取消"); CDialog::OnCancel(); }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇: Visual C /MFC入门教程(六)
下一篇: Visual C /MFC入门教程(四)
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash