hur.cn - 华软网

 热门搜索

如何在全局函数中调用局部函数

  作者:未知    来源:网络    更新时间:2011/3/28
请问如何在全局函数中调用局部函数,请高手指教!

int PASCAL ABC()//全局函数 第一个函数
{
    DrawGragh();
}

void CTestDlg::DrawGragh()
{
    ......
}
---华软 网友回答---
CTestDlg dlg;
dlg.DrawGragh();
---华软网友回复---
C++">
CTestDlg *pTestDlg = new CTestDlg;
pTestDlg->DrawGragh();
delete pTestDlg;

---华软网友回复---
谢谢您的回复,两个函数都在主框架类CTestDlg中,好像不能这样调用吧?
---华软网友回复---
要调用局部函数,不如将函数设为静态函数,随你怎么玩,哈哈
---华软网友回复---
C++">
int PASCAL ABC()//全局函数 第一个函数
{
  DrawGragh();
}

这个ABC函数增加一个CTestDlg*类型的参数,然后就能够用这个参数去调用CTestDlg的方法DrawGragh了,这只是一种,呵呵。
---华软网友回复---
两个函数是在统一个类中,好像不能这么调用啊
---华软网友回复---
第一步:
在 TestDlg.cpp 的

C++">
END_MESSAGE_MAP() 后面加上:

CWwDlg myDialog;


第二步:
在 TestDlg.h 的


//{{AFX_INSERT_LOCATION}}
之前加上
extern CWwDlg myDialog;


加完后是:

extern CWwDlg myDialog;
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_WWDLG_H__5B77F0C5_6575_458E_BFD2_D19D28DEACC9__INCLUDED_)


第三步:在你的全局函数里,想要调用主类CTestDlg 里面的函数 LocalFunc() :以下:

void GlobalFuc()
{
myDialog.LocalFunc();
}


了解了么?
---华软网友回复---
全局函数想要调用类中的成员函数,必需要获得类对象的指针
你能够这样

void GlobleGunc(void* p)
{//传入的类指针p
...
}
---华软网友回复---
 TandyT您好:
按照您的步骤操作,在extern CWwDlg myDialog;这个地方出现毛病
D:\ultrasonicscanforarm\ultrasonicscanforarmview.h(296) : error C2146: syntax error : missing ';' before identifier 'myDialog'
---华软网友回复---
2个字,静态
---华软网友回复---
引用 9 楼 hukai19851029 的回复:
TandyT您好:
按照您的步骤操作,在extern CWwDlg myDialog;这个地方出现毛病
D:\ultrasonicscanforarm\ultrasonicscanforarmview.h(296) : error C2146: syntax error : missing ';' before identifier 'myDialog'


你应该我上面方法里的CWwDlg 类名全数改成你的类名: CTestDlg  

由于我的工程和你的不同名,你当然不能直接这样写啊,我只是举个例子这样能够实现全局函数调用类内函数而已。

我这里是能够的。实在不行发你工程 给我
---华软网友回复---
那按照下面这方法吧:
在你的全局函数里面:


CTestDlg* Pdlg;   
 Pdlg = (CWwDlg*)AfxGetMainWnd();
 Pdlg->类内函数();


这样应该不会犯错了
---华软网友回复---

//对了, 7楼 的方法里面,增加的那两行声明语句应该改成指针的,以下:


//在TestDlg.cpp 里

CTestDlg *myDialog=NULL;

//在TestDlg.h 里

extern CTestDlg *myDialog;

//然后,全局函数里调用:

myDialog->类内函数();

---华软网友回复---
在全局函数所在资料a.cpp中 #include "CTestDlg.h"
在a.cpp中,定义一个全局变量保存CTestDlg实例的指针
CTestDlg *pGlobleDlg;
在全局函数中,用pGlobleDlg访问CTestDlg类方法

在CTestDlg.cpp中,extern CTestDlg *pGlobleDlg;
pGlobleDlg在CTestDlg初始化时赋值
---华软网友回复---
引用 12 楼 tandyt 的回复:
那按照下面这方法吧:
在你的全局函数里面:


C/C++ code

CTestDlg* Pdlg;       
 Pdlg = (CWwDlg*)AfxGetMainWnd();//晕,这里忘了改了。。。。
 Pdlg->类内函数();



这样应该不会犯错了


晕,上面那里忘了改了。。应该是

Pdlg = (CTestDlg*)AfxGetMainWnd();//
---华软网友回复---
谢谢列位的回答,问题已经解决,谢谢!
---华软网友回复---
看看~~      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。