MFC单文档框架编程(二): SDI框架下的消息处理

MFC单文档框架编程(一)
.......................................................................................................................

1. 菜单栏与工具栏具有相同ID,则两个控件执行同样的动作
如菜单项(打开)与工具栏按钮(打开)具有相同的ID (ID_FILE_OPEN),则二者都可实现"打开"的动作,而实现代码只需要在一个控件中实现。


2. 在XXXDoc.h(框架自动生成的Doc)中为类添加数据成员,则该成员可为所有使用该Doc的所有View访问(如程序中的所有View)
如添加变量:
int m_devNumber;

3. 添加菜单项事件处理程序
void CMainFrame::OnFileOpen()
{
// TODO: 在此添加命令处理程序代码
CBrdManageDoc* pDoc=(CBrdManageDoc*)GetActiveDocument();// 获取文档 (CBrdManageDoc为工程Doc名字)
int * pDevNum = &(pDoc->m_devNumber);        //Doc类的成员变量
int Status = realFunction(pDevNum);                    //程序的核心功能函数 对 Doc的成员变量赋值
if (Status == NP_SUCCESS)
{
pDoc->UpdateAllViews(NULL);               //更新所有视图
UpdateData(FALSE);                                 //各控件的内容清空
}
}

4. 在其他view中处理Doc类的数据
如重载CBrdListView的OnUpdate函数:
void CBrdListView::OnUpdate(CView* /*pSender*/, LPARAM /*lHint*/, CObject* /*pHint*/)
{
// TODO: 在此添加专用代码和/或调用基类
CBrdManageDoc* pDoc=(CBrdManageDoc*)GetDocument(); //获取文档指针
if(pDoc->m_devNumber > 0) //添加了数据
        {
            .......
        }
}

5.从上面的过程可以看到,框架下的各种View通过共享一Document,而实现数据共享(消息传递)。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值