http://www.vckbase.com/code/relateddoc.asp?id=518
下载了bardemo,但是不知道怎么相互通讯.比如在下面的命令窗口里输入一个命令,让他作相应的操作,在View中显示结果等,对文档窗口也做类似处理?请大狭帮忙.
下载了bardemo,但是不知道怎么相互通讯.比如在下面的命令窗口里输入一个命令,让他作相应的操作,在View中显示结果等,对文档窗口也做类似处理?请大狭帮忙.
对于ToolBar的话,可以使用WM_COMMAND消息传递到VIEW中,如果需要对文档也进行处理,这个你就多学一下多文档界面吧,呵呵
你只要通过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);
}
加#include "MainFrame.h"
后它又说:
\bardemo\vckbasedlg.h(21) : error C2065: 'IDD_DIALOGBAR' : undeclared identifier
?怎么办?
设置全局2个对象
CView* pView1
CView* pView2CView1::CView1()
{
pView1 = this;
}CView2::CView2()
{
pView2 = this;
}在对指针调用
如果你添加该句后依然无效,那么就是这个对话框资源在你的工程中并未建立,建议楼主参照你所下载的代码添加该对话框'IDD_DIALOGBAR'
BOOL CCoolTabCtrl::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)
BOOL CCoolBar::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)
然后呢,
比如在下面命令窗口里输入circle;让在View里画个圆,该怎么做,具体点.
自定义消息WM_DRAWCIRCLE
2
在view里面响应它执行画圆操作
3
在coobar中SendMessage()即可
CChildView m_wndView;
CMyEdit m_wndEdit;(CEdit的派生类,用于接收输入命令)
现在自定义消息以后,在m_wndEdit中怎么向m_wndView发送消息?
::SendMessage((m_wndView的句柄怎么得到?),…);
如果期望得到一个窗口的句饼,方法很多,在MFC可以先得到一个CWnd的指针,然后再取得句饼,当然这个指针又怎么取得呢?方法很简单,当这个对象被创建的时候可以找个地方把指针保存起来。另外MFC也提供了几个函数可以取得当前VIEW的指针,具体做法我已经记不起来了,搂主可以查一下MSDN。方法是多样化的,然而怎么实现却要靠楼主自己。楼主若是刚学VC不久,不妨多试试:)