MFC中如何将消息传递给其他类对象处理 20

如果我理解的没错的话,像LButtonDown之类的消息,一般都是在View中先重载的,我不想把所有的具体细节都放在View中处理,希望把这个消息传递给其他的类来处理,例... 如果我理解的没错的话,像LButtonDown之类的消息,一般都是在View中先重载的,我不想把所有的具体细节都放在View中处理,希望把这个消息传递给其他的类来处理,例如:
View中得到鼠标点击操作->交给工具箱,工具箱判断后->交给下层的某个类或对象,它再经过判断后-> 对其他的对象进行处理,像这种想法该如何实现,能不能给一个大概的例子

另外我看过一个例子,它的使用方法很像我要求的那种,使用方法好像和GetDocument()比较像,它用GetToolKit()方法返回一个ToolKit类的静态实例?的指针?,然后在LButtonDown中直接这么写
void CXXXView::OnLButtonDown(UINT nFlags, CPoint point)
{
GetToolKit()->OnLButtonDown(this, nFlags, point);
}
在接受处这么写
void CToolKit::OnLButtonDown(CODView* pView, UINT nFlags, CPoint point)
{
CYYYTool* pTool = GetShapeTool();
pTool->OnLButtonDown(pView, nFlags, point);
}
靠这样传递的,用的是什么原理,我自己照这样编的时候,好像怎么都通不过,因为在Tool中,要声明View的类,不然没办法创造出pView指针,在View中,又要包含Tool,不然没法创造出Tool的指针,我的理解可能比较混乱。请大神讲解
PS:这好像牵涉到引用的感念
有一处写错 CODView应该是 CXXXView
展开
 我来答
sewskg
2010-12-10 · TA获得超过1089个赞
知道小有建树答主
回答量:602
采纳率:0%
帮助的人:322万
展开全部
CSingleDocTemplate* pDocTemplate;
pDocTemplate = new CSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CFSDDoc),
RUNTIME_CLASS(CMainFrame), // main SDI frame window
RUNTIME_CLASS(CFSDView));
AddDocTemplate(pDocTemplate);

// Parse command line for standard shell commands, DDE, file open
CCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);

// Dispatch commands specified on the command line
if (!ProcessShellCommand(cmdInfo))
return FALSE;

// The one and only window has been initialized, so show and update it.
m_pMainWnd->ShowWindow(SW_SHOW);
m_pMainWnd->UpdateWindow();

return TRUE;
真正建立窗口的是ProcessShellCommand(cmdInfo)函数调用。。可以一步步跟踪。
我可以帮助你,你先设置我最佳答案后,我百度Hii教你。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式