用函数作为参数传的的问题。

joer986565 2004-01-27 01:08:03
有一函数定义如下:
void Drawf(CDC* pDC,CPrintInfo* pInfo,void* pVoid)
{
((CDlgPreprintDlg*)pVoid)->OnPrint(pDC,pInfo);
}
函数OnPrint定义如下:
void CDlgPreprintDlg::OnPrint(CDC* pDC,CPrintInfo* pInfo)
{
pDC->DrawText(ss,&rect,DT_CENTER|DT_TOP|DT_SINGLELINE);
。。。。。。
}
这样调用Drawf:
m_PreFrame = new CMainFrame(Drawf,this,this,TRUE);

问题:1。函数Drawf无返回值怎样作为参数传递呢?
2。函数参数的值怎样确定的呢?
3。void* pVoid这是怎么回事?
...全文
24 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhjie374 2004-02-03
  • 打赏
  • 举报
回复
相当传递指针吧!
帮你顶
lzzqqq 2004-02-03
  • 打赏
  • 举报
回复
第三个问题:
void* pVoid
就是声明一个32位(四字节)长度的空间,存放无法确定类型的数据的指针。
joer986565 2004-02-03
  • 打赏
  • 举报
回复
to : nlstone(天外流星)
谢谢你的回答。有点明白了。
nlstone 2004-02-02
  • 打赏
  • 举报
回复
m_PreFrame = new CMainFrame(Drawf,this,this,TRUE);
这个构造函数第一个参数只需要一个函数地址,所以把Drawf传过去就行了。
在CMainFrame中,要调用Drawf时,自然会再把参数传进去。
譬如:
在CMainFrame中用一个成员变量:m_pFunc函数指针来接收Drawf,以后调用的时候,照函数类型传参就行了。
void*的好处是可以接收任何类型的指针,在内部再强制转换后使用。
joer986565 2004-02-02
  • 打赏
  • 举报
回复
等待回答中。。。。。。
joer986565 2004-01-27
  • 打赏
  • 举报
回复
可是函数Drawf参数的值怎么确定呢?
不传值内部怎样执行呢?
myfoxprox 2004-01-27
  • 打赏
  • 举报
回复
这个问题好象是以下这个有关,看一下在书中有关这个:

return this;

这样你可能会明白点.
DarknessTM 2004-01-27
  • 打赏
  • 举报
回复
函数名其实代表了函数的位置,相当于一个指向该函数的指针
就好比
char str1[260],str2[260];
lstrcpy(str1,str2);

这里的str1和str2不是和指针由同样效果

————————————————————
以上本人自己理解,希望不要误导,也请各位指正
joer986565 2004-01-27
  • 打赏
  • 举报
回复
希望大家可以给于解答。
joer986565 2004-01-27
  • 打赏
  • 举报
回复
困惑中。。。。。。

16,472

社区成员

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

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

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