如何在全局函数中调用局部函数
作者:未知 来源:网络 更新时间:2011/3/28
请问如何在全局函数中调用局部函数,请高手指教!
int PASCAL ABC()//全局函数 第一个函数
{
DrawGragh();
}
void CTestDlg::DrawGragh()
{
......
}
---华软 网友回答---
CTestDlg dlg;
dlg.DrawGragh();
---华软网友回复---
---华软网友回复---
谢谢您的回复,两个函数都在主框架类CTestDlg中,好像不能这样调用吧?
---华软网友回复---
要调用局部函数,不如将函数设为静态函数,随你怎么玩,哈哈
---华软网友回复---
这个ABC函数增加一个CTestDlg*类型的参数,然后就能够用这个参数去调用CTestDlg的方法DrawGragh了,这只是一种,呵呵。
---华软网友回复---
两个函数是在统一个类中,好像不能这么调用啊
---华软网友回复---
第一步:
在 TestDlg.cpp 的
第二步:
在 TestDlg.h 的
加完后是:
第三步:在你的全局函数里,想要调用主类CTestDlg 里面的函数 LocalFunc() :以下:
了解了么?
---华软网友回复---
全局函数想要调用类中的成员函数,必需要获得类对象的指针
你能够这样
void GlobleGunc(void* p)
{//传入的类指针p
...
}
---华软网友回复---
TandyT您好:
按照您的步骤操作,在extern CWwDlg myDialog;这个地方出现毛病
D:\ultrasonicscanforarm\ultrasonicscanforarmview.h(296) : error C2146: syntax error : missing ';' before identifier 'myDialog'
---华软网友回复---
2个字,静态
---华软网友回复---
你应该我上面方法里的CWwDlg 类名全数改成你的类名: CTestDlg
由于我的工程和你的不同名,你当然不能直接这样写啊,我只是举个例子这样能够实现全局函数调用类内函数而已。
我这里是能够的。实在不行发你工程 给我
---华软网友回复---
那按照下面这方法吧:
在你的全局函数里面:
这样应该不会犯错了
---华软网友回复---
---华软网友回复---
在全局函数所在资料a.cpp中 #include "CTestDlg.h"
在a.cpp中,定义一个全局变量保存CTestDlg实例的指针
CTestDlg *pGlobleDlg;
在全局函数中,用pGlobleDlg访问CTestDlg类方法
在CTestDlg.cpp中,extern CTestDlg *pGlobleDlg;
pGlobleDlg在CTestDlg初始化时赋值
---华软网友回复---
晕,上面那里忘了改了。。应该是
Pdlg = (CTestDlg*)AfxGetMainWnd();//
---华软网友回复---
谢谢列位的回答,问题已经解决,谢谢!
---华软网友回复---
看看~~
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。
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个字,静态
---华软网友回复---
你应该我上面方法里的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初始化时赋值
---华软网友回复---
晕,上面那里忘了改了。。应该是
Pdlg = (CTestDlg*)AfxGetMainWnd();//
---华软网友回复---
谢谢列位的回答,问题已经解决,谢谢!
---华软网友回复---
看看~~

华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。
- 上一篇文章: 关于ptlib.h问题
- 下一篇文章: VS2008 基于对话框 新建对话框问题