MFC:如何使用Boost.Signal2在Document-View结构中添加事件响应机制
2010-05-21 10:40
543 查看
传统方式
1. XXDoc.h//... class CXXDoc : public CDocument { //... // Operations public: void Foo1(); void Foo2(); void Foo3(); //... };
2. XXDoc.cpp
//... void CXXDoc::Foo1() { // Do Foo1 } void CXXDoc::Foo2() { // Do Foo2 } void CXXDoc::Foo3() { // Do Foo3 }
3. XXView.h
//... class CXXView : public CView { //... protected: //... afx_msg void OnFoo1(); afx_msg void OnFoo2(); afx_msg void OnFoo3(); //... };
4. XXView.cpp
//... void CXXView::OnFoo1() { GetDocument()->Foo1(); Invalidate(); } void CXXView::OnFoo2() { GetDocument()->Foo2(); Invalidate(); } void CXXView::OnFoo3() { GetDocument()->Foo3(); Invalidate(); }
新方式
1. XXDoc.h#include <boost/signals2.hpp> //... class CXXDoc : public CDocument { //... // Attributes public: boost::signals2::signal<void()> m_sigDocChanged; // Operations public: void Foo1(); void Foo2(); void Foo3(); //... };
2. XXDoc.cpp
//... void CXXDoc::Foo1() { // Do Foo1 m_sigDocChanged(); } void CXXDoc::Foo2() { // Do Foo2 m_sigDocChanged(); } void CXXDoc::Foo3() { // Do Foo3 m_sigDocChanged(); }
3. XXView.h
//... class CXXView : public CView { //... public: virtual void OnInitialUpdate(); protected: void OnDocChanged(); //... afx_msg void OnFoo1(); afx_msg void OnFoo2(); afx_msg void OnFoo3(); //... };
4. XXView.cpp
//... void CXXView::OnInitialUpdate() { CView::OnInitialUpdate(); GetDocument()->m_sigDocChanged.connect(std::bind(&CXXView::OnDocChanged, this)); } void CXXView::OnDocChanged() { Invalidate(); } void CXXView::OnFoo1() { GetDocument()->Foo1(); } void CXXView::OnFoo2() { GetDocument()->Foo2(); } void CXXView::OnFoo3() { GetDocument()->Foo3(); }
相关文章推荐
- iPhone 如何使用UIImageView播放动画,并停留在之后一张图片并添加播放结束时的事件
- iPhone 如何使用UIImageView播放动画,并停留在之后一张图片并添加播放结束时的事件
- 利用Associative机制为UIAlertView添加一个Block属性,将AlertView与button的响应事件关联
- MFC中的 Document / View 结构的使用 <转载+自己总结,MFC中的MVC>
- iOS如何给没有点击事件的View添加响应操作
- iphone 如何设置在uiImageView上添加按钮,按钮透明并且能响应事件
- Swift实现自定义AlertView,灵活添加自定义视图到AlertView,可响应事件
- ios tableView那些事 (七) 给tableView添加响应事件
- 分别使用simpleAdapter和baseAdapter为ListView的Item添加按钮响应事件
- MFC Document/View结构好贴整理
- 关于在tableview的footerView上添加button的点击不响应事件
- 如何使用VC++ 2005 给ActiveX控件添加方法,属性,事件
- Android中Recyclerview使用3----添加条目得到点击事件和长按事件
- UIImageView上添加Button不能响应点击事件[转]
- VS2013MFC对话框工程学习笔记三 - 添加一个MFC类库的按钮响应事件
- VS2013MFC对话框工程学习笔记四 - 为按钮添加一个响应事件二
- 如何使用派生出来的控件?mfc -----为控件添加变量
- UIImageView上添加Button不能响应点击事件
- ios tableView那些事 (七) 给tableView添加响应事件
- MFC单文档下为视图类添加按钮及其响应事件