http://www.vckbase.com/code/relateddoc.asp?id=518
下载了bardemo,但是不知道怎么相互通讯.比如在下面的命令窗口里输入一个命令,让他作相应的操作,在View中显示结果等,对文档窗口也做类似处理?请大狭帮忙.

解决方案 »

  1.   

    我没有下载 楼主提供的连接下载代码来测试的(不好意思,俺时间有限),不过我可以给你提供一些普通窗口间传递消息的办法,使用PostMessage或者SendMessage,SendMessage在对很多dialog窗口的子窗口发送控制命令的时候用得比较广,MSDN上有比较详细的介绍。
    对于ToolBar的话,可以使用WM_COMMAND消息传递到VIEW中,如果需要对文档也进行处理,这个你就多学一下多文档界面吧,呵呵
      

  2.   

    因为CCoolTabCtrl的父窗口是CCoolBar,CCoolBar的父窗口是CFramWnd
    你只要通过CFramWnd转发消息即可,下面一段代码是我转发控件的OnNotify消息的例子
    ,然后在View就可以接收m_wndMyBar1de的属性控件的消息了。
     
    BOOL CCoolTabCtrl::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)
    {
        if (GetParent() )
    {
    //((CCoolBar*)GetParent())->OnNotify(wParam,lParam,pResult);
    ((CCoolBar*)GetParent())->SendMessage(WM_NOTIFY,wParam,lParam);
    return TRUE;
    }

    return CWnd::OnNotify(wParam,lParam,pResult);
    }BOOL CCoolBar::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)
    {   
      ////////////////////////////
    CWnd* pWnd=GetParent();
    CMainFrame* pMainFram=static_cast<CMainFrame*>(pWnd);
    if (pMainFram)
    {
    pMainFram->SendMessage(WM_NOTIFY,wParam,lParam);
        return TRUE;
    }

        return baseCCoolBar::OnNotify(wParam,lParam,pResult);
    }
      

  3.   

    我加了以后,它说'CMainFrame' : undeclared identifier
    加#include "MainFrame.h"
    后它又说:
    \bardemo\vckbasedlg.h(21) : error C2065: 'IDD_DIALOGBAR' : undeclared identifier
    ?怎么办?
      

  4.   

    简单方法
    设置全局2个对象
    CView* pView1
    CView* pView2CView1::CView1()
    {
       pView1 = this;
    }CView2::CView2()
    {
       pView2 = this;
    }在对指针调用
      

  5.   

    #include "resource.h"
    如果你添加该句后依然无效,那么就是这个对话框资源在你的工程中并未建立,建议楼主参照你所下载的代码添加该对话框'IDD_DIALOGBAR'
      

  6.   

    我加了这两个函数
    BOOL CCoolTabCtrl::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)
    BOOL CCoolBar::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)
    然后呢,
    比如在下面命令窗口里输入circle;让在View里画个圆,该怎么做,具体点.
      

  7.   

    1
    自定义消息WM_DRAWCIRCLE
    2
    在view里面响应它执行画圆操作
    3
    在coobar中SendMessage()即可
      

  8.   

    CMainFrame的两个成员
    CChildView    m_wndView;
    CMyEdit   m_wndEdit;(CEdit的派生类,用于接收输入命令)
    现在自定义消息以后,在m_wndEdit中怎么向m_wndView发送消息?
    ::SendMessage((m_wndView的句柄怎么得到?),…);
      

  9.   

    这种问题相当的简单,然而要让人回答却有些困难,我想如果不看着代码很难有一个明白的做法,建议楼主多看MSDN,那里面有楼主想要的很多东西。
    如果期望得到一个窗口的句饼,方法很多,在MFC可以先得到一个CWnd的指针,然后再取得句饼,当然这个指针又怎么取得呢?方法很简单,当这个对象被创建的时候可以找个地方把指针保存起来。另外MFC也提供了几个函数可以取得当前VIEW的指针,具体做法我已经记不起来了,搂主可以查一下MSDN。方法是多样化的,然而怎么实现却要靠楼主自己。楼主若是刚学VC不久,不妨多试试:)