VC中可以这样实现IDirectDraw* mypDD;DirectDrawCreate( 0, &mypDD, 0 );
对应的在delphi中 我这样写的var mypDD:IDirectDraw;//这样是不是就定义了一个接口指针?正确吗?DirectDrawCreate(nil,@mypDD, nil);//这一句提示错误 提示形参和实参不一致 请大家帮忙看看错在哪里?
对应的在delphi中 我这样写的var mypDD:IDirectDraw;//这样是不是就定义了一个接口指针?正确吗?DirectDrawCreate(nil,@mypDD, nil);//这一句提示错误 提示形参和实参不一致 请大家帮忙看看错在哪里?
解决方案 »
- 问下运行程序后,不让在运行其他任何程序了(个人感觉比较难)看了好多书就是不知道用哪个API比较好,请有经验的人指点下
- 窗口的隐藏与显示问题
- 求职难啊!!同意的来顶~
- dephi7默认安装Modelmaker吗?
- 急!急!急!向各位高手请教:
- 一個奇怪的問提
- 一个关于DBGRID的问题,简单得很
- 怎么用clientdataset与ADOTable或ADOQrery移动到表中的一个记录,然后进行del与edit,怎样把这条记录中的其中一个字段取出来然后赋给一个
- 如何用sql语句在dbf数据表中插入日期型数据
- "selcet * from .db where x=y and a=b and…… "中,where后面可以跟几个and?
- delphi中怎么改输出文件目录?
- 互联上如何缩短TSocketConnection 连接时间
我知道VC中引用是用符号& delphi中的引用不是应该加上@吗?
var mypDD :PIDirectDraw;
// or
DirectDrawCreate(..., var x: IDirectDraw, ...)按照 msdn 上给出的 DirectDrawCreate 参数说明,要是我翻译的话会翻成前者,后者还是有可以让粗心的使用者的程序产生内存泄露。
所以 DirectDrawCreate(nil, mypDD, nil) 的调用是正确的,2l、3l、6l 的回答都是不懂装懂。至于为什么,我只能这么讲:var/out 是传引用,也就是实际上传的是实参的地址,和 c++ 里加 & 修饰的引用传参(如:void foo(int&);)道理是一样的(out 还会在调用方多一步处理,用来把原值清零)。
lz 要是看不懂的话,就是基础的问题了,我也没办法
我没看什么msdn,全是个人理解
GUID FAR *lpGUID,
LPDIRECTDRAW FAR *lplpDD,
IUnknown FAR *pUnkOuter
);
第二项参数是IDirectDraw接口类型指针的地址