MFC中对话框向视图类的数据发送
来源:互联网 发布:网络带来的方便 编辑:程序博客网 时间:2024/04/29 13:08
最近在做一个界面上的东西:需要在工具栏中点击按钮弹出一个对话框,这个对话框需要根据视图类里面的
变量进行更新对话框里面combox的内容,同时对话框需要将变化的内容发送给视图类,这就涉及到了对话框
和视图类之间的信息传递。
首先需要说明的一点是因为需要进行数据传递,所以不能使用模态的对话框,必须使用非模态的对话框,
也就是不能使用DoModel函数,我刚开始遇到的问题时视图类如何知道对话框已经点击了确定按钮。也就是
如何实现类似DoModel函数的功能。
在网上查了一下,发现涉及到了窗口之间消息的传递。
windows传递自定义的消息,需要利用ON_MESSAGE,需要自定义消息宏。
首先,定义对话框类CMyDlg,定义视图类CMyView。
定义自定义消息 #define WM_DIALOGOK (WM_USER+1)
class CMyDialog : public CDialog
{
public:
CMyDialog(CView* pParent); //重载的构造函数声明,原来的构造函数声明去掉
CView *pView; //定义一个存储主窗的指针
protected:
virtual void OnOK(); //重载OnOK函数声明,为了关闭对话框时间向主窗提供数据
};
//重载的构造函数声明,将原来的构造函数注释掉
CMyDialog ::CMyDialog (CView* pParent)
:CDialog(TecplotColorSet::IDD, pParent)
{
pView = pParent;
}
void CMyDialog ::OnBnClickedOk()
{
UpdateData(TRUE);
pView->SendMessage(WM_DIALOGOK);
CDialog::OnOK();
DestroyWindow();
}
在CMyView.h中定义接受消息的函数
afx_msg LRESULT OnDialogOk(WPARAM wparam,LPARAM lparam);
在CMyView.cpp中定义消息列表
BEGIN_MESSAGE_MAP(..., ...)
...
ON_MESSAGE(WM_DIALOGOK,OnDialogOk)
END_MESSAGE_MAP()
然后实现接受的消息函数
LRESULT CMyView::OnDialogOk(WPARAM wparam,LPARAM lparam)
{
AfxMessageBox(_T("Here"));
return 0;
}
这里面我开始犯的错误是:
初始化非模态对话框的时候一定要将视图类的指针传进来,也就是CView要初始化进来
这样在对话框上点击确定按钮就能触发消息,在视图类里面进行相应的操作
参考:
http://hi.baidu.com/quanhaili/item/ca0209a894edabf714329bde
http://baike.baidu.com/link?url=shz7idXWZtYhmetJOhpvNGMBIEdaVBS-9xjya906Xfkme6JkPtbW9blTWU6niffD1voZglw2jdR05NwLe07Xwa
- MFC中对话框向视图类的数据发送
- 自创的对话框类向视图类发送自定义消息
- 对话框类向视图类发送消息的两方法
- MFC 对话框类 工程视图中消失
- 向视图中插入数据的方法
- MFC从一个对话框向另外一个对话框发送消息
- mfc 一个对话框向另一个对话框发送消息
- MFC非模态对话框的创建与视图类的数据交换
- MFC程序中不同的对话框类传递数据
- 模态对话框向视图发送自定义消息
- mfc:单文档中对话框类调用视图类和框架类成员变量的实例
- MFC建的对话框类在类资源视图中不显示
- 对话框中向控件发送消息
- 线程中向主对话框发送消息
- 向视图中插入数据的问题(通过触发器向视图插入数据)
- MFC中从一个类向其他类发送消息的方法
- MFC中从一个类向其他类发送消息的方法
- MFC 子对话框向父对话框传递数据
- Java Swing编程中需要注意的线程调度及SwingWorker的用法
- 考试周结束的前兆
- maven plugin 开发
- bugfree安装与配置
- Windows7下Telnet安装和测试
- MFC中对话框向视图类的数据发送
- 基于visual Studio2013解决算法导论之002归并排序
- SpringMvc简单注解配置
- JAVA中SERIALVERSIONUID的解释
- 使用openssl命令剖析RSA私钥文件格式
- Qt获取当前时间
- C#实现 获取指定字节长度 中英文混合字符串 的方法
- onethink-(02)-APMServ5.2.6 升级php5.2 到 5.3.7
- 批量删除Amazon云端文件