猿问
下载APP

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

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


ibeautiful
浏览 75回答 3
3回答

慕姐829404

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

慕标琳琳

CMainFrame *pMain=(CMaimFrame *)AfxGetApp()->m_pMainWnd;等。不过最简单的方法如下view类中获取它的父frameCMainFrame *pMain=(CMaimFrame*)GetParentFrame();得到mainframe指针后就可以直接访问mainframe的公共成员了。mainframe->fun(); 

青春有我

你这个例子添加Doc的ID_FILE_OPEN响应函数就可以了。直接在响应函数中调用已有函数不就行了吗,如果你非要建立到已有函数的映射,也可以改变消息映射,但是这个已有的函数也要符合被映射的消息预定义的参数格式。这里ON_COMMAND映射的函数是无参数的。就就是已有的函数要和向导添加的OnFileOpen形式参数一样无参数。在doc类的代码的以下区域改消息的映射函数。BEGIN_MESSAGE_MAPON_COMMAND(ID_FILE_OPEN, &CxxDoc::OnFileOpen)END_MESSAGE_MAP()把后面的&CxxDoc::OnFileOpen映射函数改成已有的函数。
打开App,查看更多内容
随时随地看视频慕课网APP
我要回答