在mainframe里自己定义的函数该怎么调用,比如说在view类里的一个消息响应函数里调用一个fun()

比如说在view类里的一个消息响应函数里调用一个在mainframe里自定义的妇女()... 比如说在view类里的一个消息响应函数里调用一个在mainframe里自定义的妇女() 展开
 我来答
yuanningcz
推荐于2017-10-04
知道答主
回答量:23
采纳率:0%
帮助的人:22.6万
展开全部
教你一个最简单的原则,就是VC里面的函数调用原则。其实,VC里面的函数调用,没有你想想的那么难。
原则一、如果类是系统提供的类,如view类,doc类,系统会提供 获取指向该类指针的函数。例如,vc里面获取view类的指针:
CMainFrame *pMain=(CmaimFrame *)AfxGetApp()->m_pMainWnd;
CyouView *pView=(CyouView *)pMain->GetActiveView();
获取frame类的指针:
CWinApp 中的 m_pMainWnd变量就是MainFrame的指针
也可以:
CMainFrame *pMain =(CMainFrame *)AfxGetMainWnd();

关于这些类的指针获取,参考下面这篇文章。
http://hi.baidu.com/slj_win/blog/item/ada712c4556803d1d10060ab.html

原则二、 如果类是你自己写的。例如,你定义类A,需要在类B中引用。那么你就要在类B的头文件(.h)文件中添加该类的的头文件,即#include“A.h”,然后用一个指针指向类A,这样就可以通过该指针引用类A了。但是,直接包含头文件,会造成编译时的效率过低。通常效率比较高的方法是,在类B的头文件中添加类A的声明 class A;然后再类B的实现文件中添加类A的头文件#include“A.h”。因为,文件中包含头文件的话,头文件互相包含,会造成编译的文件超乎想象的庞大,影响整个软件的效率。
庄依春
2011-09-05 · TA获得超过182个赞
知道小有建树答主
回答量:469
采纳率:0%
帮助的人:310万
展开全部
你这个例子添加Doc的ID_FILE_OPEN响应函数就可以了。
直接在响应函数中调用已有函数不就行了吗,

如果你非要建立到已有函数的映射,也可以改变消息映射,但是这个已有的函数也要符合被映射的消息预定义的参数格式。这里ON_COMMAND映射的函数是无参数的。就就是已有的函数要和
向导添加的OnFileOpen形式参数一样无参数。
在doc类的代码的以下区域改消息的映射函数。

BEGIN_MESSAGE_MAP
ON_COMMAND(ID_FILE_OPEN, &CxxDoc::OnFileOpen)
END_MESSAGE_MAP()

把后面的&CxxDoc::OnFileOpen映射函数改成已有的函数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ufo1cn
2011-09-06 · TA获得超过448个赞
知道小有建树答主
回答量:412
采纳率:0%
帮助的人:221万
展开全部
上面说得很好,可以用
CMainFrame *pMain=(CMaimFrame *)AfxGetApp()->m_pMainWnd;
等。

不过最简单的方法如下
view类中获取它的父frame
CMainFrame *pMain=(CMaimFrame*)GetParentFrame();

得到mainframe指针后就可以直接访问mainframe的公共成员了。
mainframe->fun();
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
巨龍之舞
2011-09-06 · TA获得超过190个赞
知道答主
回答量:136
采纳率:0%
帮助的人:152万
展开全部
CMainFrame *pMain=(CMaimFrame *)AfxGetApp()->m_pMainWnd就行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式