Up就有分,请管理员别删。帮忙看一看,这是什么?

quengzi 2002-03-07 05:18:42
//my.h
typedef int (FAR PASCAL * LPFNSetSendFreq)(DWORD dwActive, DWORD wAlarm1, DWORD dwAlarm2);//??
class CParser
{
public: int SetSendFreq(DWORD dwActive, DWORD dwAlarm1, DWORD larm2);//?? CParser();
virtual ~CParser();
protected:
#ifdef _DEBUG
CString _strModuleName; // module name without path
#endif
LPFNSetSendFreq _lpfnSetSendFreq;//??
};
//+++++++++++++++++++++++++++++++++++++++++++++
//my.cpp
int CParser::SetSendFreq(DWORD dwActive, DWORD dwAlarm1, DWORD dwAlarm2) {
if (NULL == _lpfnSetSendFreq)
{
TRACE(_strModuleName + " CParser::SetSendFreq: function not lemented\n"); return E_PARSER_FUNC_NOT_IMPL;
}
else
{
return _lpfnSetSendFreq(dwActive, dwAlarm1, dwAlarm2);//??
}
}
请详细解释!
为什么要这样定义?
...全文
39 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
linjiework 2002-03-08
  • 打赏
  • 举报
回复
关注!
skygod 2002-03-08
  • 打赏
  • 举报
回复
up
atoz 2002-03-08
  • 打赏
  • 举报
回复
up
quengzi 2002-03-08
  • 打赏
  • 举报
回复
谢谢各位!
今天了解这段渊源!



送分了!
呵呵~~~~~~~~
Qiushen 2002-03-07
  • 打赏
  • 举报
回复
太长了.
telstar 2002-03-07
  • 打赏
  • 举报
回复
抱一本C的书,翻到讲指针的章节,整个世界变得清楚了......
tigerfox 2002-03-07
  • 打赏
  • 举报
回复
代码,头痛。
lwglucky 2002-03-07
  • 打赏
  • 举报
回复
please study c languge first and hard ...
LPFNSetSendFreq _lpfnSetSendFreq is definetion of the function pointer !
Kendiv 2002-03-07
  • 打赏
  • 举报
回复
这似乎没什么难的,我觉得你还是基本功不扎实,再去学学吧。
surfl 2002-03-07
  • 打赏
  • 举报
回复
我也来Up!
shifan 2002-03-07
  • 打赏
  • 举报
回复
upup
honey 2002-03-07
  • 打赏
  • 举报
回复
UP UP
quengzi 2002-03-07
  • 打赏
  • 举报
回复
请继续关注,明天结帐!
非常感谢各位热心的朋友!
apocn 2002-03-07
  • 打赏
  • 举报
回复
我感觉你的这个代码好像是利用函数指针,来截获一个函数的。
因为你只给出一部分的代码,所以不太确信。

粗糙地说:将这个指针指向你要截获的函数,从而改变这个函数的行为。
happylebo 2002-03-07
  • 打赏
  • 举报
回复
我想这样定义不是为了有什么好处吧?有的时候不得不这样定义
比如说显式调用DLL时候,你就要定义一个函数指针然后调用函数嘛,我想是这样的,不知道对不对了
咚咚咚咚咚咚 2002-03-07
  • 打赏
  • 举报
回复
up
idoloveyou 2002-03-07
  • 打赏
  • 举报
回复
up
myctx 2002-03-07
  • 打赏
  • 举报
回复
UPUP
quengzi 2002-03-07
  • 打赏
  • 举报
回复
EvilSword(邪剑)
非常好!
但我不明白为什么要这样定义?
有什么好处?
EvilSword 2002-03-07
  • 打赏
  • 举报
回复
typedef int (FAR PASCAL * LPFNSetSendFreq)(DWORD dwActive, DWORD wAlarm1, DWORD dwAlarm2);//??
//LPFNSetSendFreq 定义了一个指向函数指针的类型,函数的参数如上
public: int SetSendFreq(DWORD dwActive, DWORD dwAlarm1, DWORD larm2);//?? CParser();
//定义了一个函数
LPFNSetSendFreq _lpfnSetSendFreq;//??
//_lpfnSetSendFreq是一个指向函数指针类型的变量return _lpfnSetSendFreq(dwActive, dwAlarm1, dwAlarm2);//??
//调用函数
(如果我没记错的话就是上面的,下面有一个例程序:console的)


#include <iostream.h>
typedef int ( *lpfnF)(int a,int b);//??
class CParser
{
public:
CParser(){_lpfn=0;};
int p(int a,int b);
static int f(int a,int b)
{
cout << a<<endl;
cout<<b<<endl;
return 0;
};

virtual ~CParser(){};

lpfnF _lpfn;
};

int CParser::p(int a,int b)
{
if (_lpfn != 0)
{
return _lpfn(a,b);
}
return -1;
}

void main()
{
CParser cp;
cp._lpfn = &CParser::f;
cp.p(3,5);
}

输出为:
3
5

加载更多回复(11)

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧