为了账号安全,请及时绑定邮箱和手机立即绑定

请问在mainframe里自己定义的函数该怎么调用?

/ 猿问

请问在mainframe里自己定义的函数该怎么调用?

九州编程 2019-09-23 12:16:08

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


查看完整描述

3 回答

?
烙印99

教你一个最简单的原则,就是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”。因为,文件中包含头文件的话,头文件互相包含,会造成编译的文件超乎想象的庞大,影响整个软件的效率。


查看完整回答
反对 回复 2019-09-25
?
慕瓜9086354

CMainFrame *pMain=(CMaimFrame *)AfxGetApp()->m_pMainWnd;
等。

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

得到mainframe指针后就可以直接访问mainframe的公共成员了。
mainframe->fun();

 




查看完整回答
反对 回复 2019-09-25
?
慕虎7371278

你这个例子添加Doc的ID_FILE_OPEN响应函数就可以了。
直接在响应函数中调用已有函数不就行了吗,

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

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

把后面的&CxxDoc::OnFileOpen映射函数改成已有的函数。





查看完整回答
反对 回复 2019-09-25

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信