MFC对话框学习 心得.doc
文本预览下载声明
计算机图形学 交互式程序设计心得
Mfc对话框学习
对于无模式对话框接收的输入信息,我们可以以向父窗口发送消息的方式进行。下面以Vc++6.0来用实例来说明无模式对话框的使用。
建立mfc appwizard(exe)工程,用AppWizard生成一个单文档应用程序,取名dream
确定-》选择单文档-》完成即可。
点ResoucreView中的Dialog,右击-》插入-》选中对话框-》新建,创建一个如图所示的对话框资源,选中对话框,右击-》属性,将对话框命名为IDD_DREAM。并依次给对话框资源添加控件。
关闭对话框,为对话框添加控件。编辑框、按钮、静态文本等
通过点击控件的属性来,修改其标题和ID值。
启动MFC ClassWizard添加一个新类,右击对话框-建立类向导-》确定:如图
将类命名为cdtestdream,然后点击确定,即可!
4.用MFC ClassWizard为新建类CDtestdlmy的编辑控件添加对应的成员变量,如图。
双击你要添加变量的ID号,然后设置变量名和变量类型。点击确定!
4、在头文件dtestdream.h中为类Cdtestdream添加成员变量CWnd *m_pParent;在dtestdream.cpp中为构造函数时添加如下黑体部分
Cdtestdream::Cdtestdream(CWnd* pParent /*=NULL*/)
: CDialog(Cdtestdream::IDD, pParent)
{
//{{AFX_DATA_INIT(Cdtestdream)
m_x = 0;
m_y = 0;
//}}AFX_DATA_INIT
ASSERT(pParent);
m_pParent=pParent; //保存父窗口指针
}
5、用MFC ClassWizard为新建类CDtestdream的按钮控件添加对应的成员函数,如图。
在dtestdream里面会加入相应的函数:修改此函数:
void Cdtestdream::OnMuice()
{
// TODO: Add your control notification handler code here
float FV_i;
FV_i=1; //不同按钮返回不同值,让其父窗口可以识别是哪个按钮按下
UpdateData(true); //强制数据交换,以更新控件对应的变量值
m_pParent-SendMessage(WM_DLG_CREATE,(WPARAM)FV_i);
//向父窗口发送消息WM_DLG_CREATE,并传送FV_i
}
6、在头文件dtestdream.h中添加自定义消息
#define WM_DLG_CREATE WM_USER+ 0X34
至此,对于新加进类dtestdream的处理已完成,下面处理调用Cdtestdream的CdreamlView类。
7、在ResoucreView中的双击Menu资源IDR_MAINFRAME,添加菜单“对话框测试”,ID为ID_EDIT_TEST,如图所示。
8、在头文件dreamView.h中为CtestdlView类添加成员变量并引入头文件
#include dreamView.h
Cdtestdream* testdlmy;黄色区域要符合自己的类名!
int x,y;
在CTestdlView::CTestdlView()构造函数中添加如下代码:
CTestdlView::CTestdlView()
{
// TODO: add construction code here
testdlmy=new Cdtestdream(this);
x=0;y=0;
}
9、利用类向导CdreamView类添加响应ID_EDIT_TEST的函数
CDreamView::OnEditTest。如图所示
在函数中添加如下代码:
void CDreamView::OnEditTest()
{
// TODO: Add your command handler code here
testdlmy-Create(IDD_DREAM,NULL); //创建无模式对话框,黄色区域名字要根据工程名修改!
testdlmy-ShowWindow(SW_SHOW); //显示无模式对话框
}
到此时,程序运行就可以显示对话框了,运行结果如图所示:
但还没有添加对应动作,下面添加响应动作。
9、手动为CdreamView类添加消息响应函数
在头文件dreamView.h中添加
afx_msg void OnDlgNotifyMsg(WPARAM wP);
在dreamView.cpp的消息响
显示全部