我有一个dll,我想调用里面的函数,希望大家帮我弄成delphi的格式。。(200)

  • 主题发起人 likingzhe
  • 开始时间
L

likingzhe

Unregistered / Unconfirmed
GUEST, unregistred user!
1、 文档内容EtwoMultTouchSDK包中包含以下文件:MultiTouchSDK.dll 多点触摸动态链接库MultiTouchSDK.lib 库文件MultiTouchSDK.h API头文件TouchData.h 数据格式说明2、使用条件要使用以上SDK,首先要安装益图电子的多点触摸驱动程序。装好驱动后,运行编译好的应用程序即可实现多点触摸功能。3、函数说明: MultiTouchSDK.dll中包含以下主要函数StartComDevice(int nport, BOOL bTransform);RegistCallback(MTouchCallback);StopComDevice();如何使用它们来使应用程序能够实现多点功能呢?第一步:把MultiTouchSDK.h、TouchData.h和MultiTouchSDK.lib复制到应用程序的项目文件夹中。第二步:在应用程序的主文件#include “MultiTouchSDK.h”。第三步:在项目“属性配置”设置中的“附加依赖项”中填写:MultiTouchSDK.lib。第四步:在应用程序中创建一个给RegistCallBack使用的回调函数,回调函数名字任意取,但是格式要对。比如我的回调函数名为MultTouchCallBack,定义格式以下:void WINAPI MultTouchCallBack (const PointData *pd, int Cnt) // callback function{//注:每个点都有两对坐标,即左上角和右下角坐标//If(Cnt == 1)//Cnt表示触摸的点数,表示单点触摸//{// pd[0].x1;//单点触摸时该点的左上角x轴坐标// pd[0].x2;//单点触摸时该点的右下角x轴坐标// pd[0].y1;//单点触摸时该点的左上角y轴坐标// pd[0].y2;//单点触摸时该点的右下角y轴坐标//}//If(Cnt == 2) //Cnt表示触摸的点数,表示两点触摸//{// pd[0].x1;//两点触摸时第一点的左上角x轴坐标// pd[0].x2;//两点触摸时第一点的右下角x轴坐标// pd[0].y1;//两点触摸时第一点的左上角y轴坐标// pd[0].y2;//两点触摸时第一点的右下角y轴坐标// // pd[1].x1; 两点触摸时第二点的左上角x轴坐标// pd[1].x2; 两点触摸时第二点的右下角x轴坐标// pd[1].y1; 两点触摸时第二点的左上角y轴坐标// pd[1].y2; 两点触摸时第二点的右下角y轴坐标//}}应用程序就是通过这个回调函数就可以获取到相应的触摸坐标。*补充说明:获取到触摸屏的相应坐标后,要转换为相应的鼠标坐标。计算方式如下:通过下面的两句获取到显示器的分辨率的相应值,int scx = GetSystemMetrics(SM_CXSCREEN);//表示X方向int scy = GetSystemMetrics(SM_CYSCREEN);//表示Y方向假设相应的鼠标坐标X轴的值为x,Y轴的值为y,那么于是有:x= pd[0].x1 * scx / 4096y= pd[0].y1 * scy / 4096也就是说要乘以一个转换因子scx/4096,这样就能得到对应的鼠标坐标值。还有,如果对于一个触摸点,您不需要两对坐标值,只需要一对坐标值就能满足您的要求,请您取每个触摸点的左上角那对坐标值,如上面例子所示。第五步:在应用程序初始化函数中调用StartComDevice函数, nport = 0, bTransform = TRUE,打开设备。第六步:在相应位置调用RegistCallback(MultTouchCallBack)注册回调函数,其中的MultTouchCallBack就是第四步定义的回调函数。第七步:在应用程序退出的时候调用StopComDevice函数。通过以上七步,应用程序就可以获取到多点触摸数据。要运行编译好的exe文件,请把MultiTouchSDK.dll和exe文件放在一起。这个是dll的说明,希望江湖老大,帮我弄成delphi格式的。并告诉我怎么用!!!万分感谢,电话13811498015,分数大大的有。
 
[:(][:(][:(][:(]求大哥出手,帮帮忙
 
第二步:在应用程序的主文件#include “MultiTouchSDK.h”。你可能先要把 MultiTouchSDK.h (多数是 C 或 C++ 写的) 翻译成 Delphi 版的才可以进行其他的步骤。如果只用 dll 就可以的话就简单多了,你直接调用里面的函数就是了,调用方法百度一把,牛毛一样,祝你好运。
 
应该就是dll吧,我没有用过dll的。翻译不过来,返回值之类的都不知道。。呵呵,要拿分,就给点具体的帮助。大家帮帮忙了。
 
把你的 EtwoMultTouchSDK包 放上来看看。你可以打包放到笔记里
 
SDK的头文件啊,把C转换成Delphi的就行了unitinterfaceuses//---//常量、类的定义//---//函数/过程的定义procedure WINAPI MultTouchCallBack (pd:pointData; Cnt:integer); stdcall;implementationprocedure WINAPI MultTouchCallBack; external dllname name 'WINAPI MultTouchCallBack';end.照着翻就行了。
 
常广荣老大,你能说的具体些嘛,有别的联系方式嘛,给我好好讲讲可以嘛。我的qq是954295226。呵呵,讲清楚了,必有感谢。
 
请大家帮忙,不管是分数,还是别的。我都会感谢朋友的!
 
pd:pointData,这个都不知道是什么。。。。。
 
可能是指针,在Delphi中定义为 pd: PChar 即可。
 
指针,呵呵,我也是这么想的。压根就没用过这东西。。。c有什么好
 
不会弄,怎么上传啊,放到笔记里。找不到!谁想要,就把邮箱写上,我发给他!渴望大家帮我解决这个东西,烦死了,不会用c语言!
 
点击“我的笔记”即可。
 
笔记,那个不是附图嘛,也可以rar下载。这样好了,有能帮我把这个dll翻译过来的,按照示例c语言给的,翻译成delphi的,能编译,能使用。要分给分,在送1条玉溪烟作为敬意!
 
我放在我的笔记里了,要是看不到,就留下联系方式,我会及时联系的。
 
我转了一下,由于没有驱动,运行时会报“打开设备失败”的提示,而且还会有一个Runtime error的问题。另外,看他的.cpp源码似乎把RegistCallBack(&MultTouchCallBack);StartComDevice(0, True);放到一起了,这与文档的说明有些出入,你自己测试一下吧,祝你好运。unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Controls, Forms, Dialogs, StdCtrls, StrUtils;type TForm1 = class(TForm) btnTest: TButton; procedure btnTestClick(Sender: TObject); private public end;type _TouchData = record dwTouchCount: DWORD; x1: DWORD; y1: DWORD; x2: DWORD; y2: DWORD; end; PointData = ^_TouchData;var Form1: TForm1; function MultTouchCallBack(const pd: PointData; Cnt: Integer): Integer; function StartComDevice(nport: Integer; bTransform: Boolean): Integer; stdcall; external 'MultiTouchSDK.dll'; function RegistCallBack(MTouchCallback: PChar): Integer; stdcall; external 'MultiTouchSDK.dll'; function StopComDevice(): Integer; stdcall; external 'MultiTouchSDK.dll';implementation{$R *.dfm}// 对应文档第四步:在应用程序中创建一个给 RegistCallBack 使用的回调函数function MultTouchCallBack(const pd: PointData; Cnt: Integer): Integer;var gp1, gp2: PointData;begin // 注:每个点都有两对坐标,即左上角和右下角坐标 if Cnt = 1 then // Cnt表示触摸的点数,1表示单点点触摸 begin gp1.x1 := pd.x1; // 单点触摸时该点的左上角x轴坐标 gp1.x2 := pd.x2; // 单点触摸时该点的右下角x轴坐标 gp1.y1 := pd.y1; // 单点触摸时该点的左上角y轴坐标 gp1.y2 := pd.y2; // 单点触摸时该点的右下角y轴坐标 end; if Cnt = 2 then begin gp1.x1 := pd.x1; // 两点触摸时第一点的左上角x轴坐标 gp1.x2 := pd.x2; // 两点触摸时第一点的右下角x轴坐标 gp1.y1 := pd.y1; // 两点触摸时第一点的左上角y轴坐标 gp1.y2 := pd.y2; // 两点触摸时第一点的右下角y轴坐标 gp2.x1 := pd.x1; // 两点触摸时第二点的左上角x轴坐标 gp2.x2 := pd.x2; // 两点触摸时第二点的右下角x轴坐标 gp2.y1 := pd.y1; // 两点触摸时第二点的左上角y轴坐标 gp2.y2 := pd.y2; // 两点触摸时第二点的右下角y轴坐标 end;end;procedure TForm1.btnTestClick(Sender: TObject);begin // 对应文档第六步: // 在相应位置调用 RegistCallBack(MultTouchCallBack)注册回调函数 // 其中的 MultTouchCallBack 就是第四步定义的回调函数 RegistCallBack(@MultTouchCallBack);end;initialization // 对应文档第五步: // 在应用程序初始化函数中调用StartComDevice函数, nport = 0, bTransform = True,打开设备 StartComDevice(0, True);finalization // 对应文档第七步:在应用程序退出的时候调用StopComDevice函数 StopComDevice; end.
 
谢谢szhcracker大侠,我看看,我会第一时间联系你
 
function RegistCallBack(MTouchCallback: PChar): Integer; stdcall; external 'MultiTouchSDK.dll';RegistCallBack(&MultTouchCallBack);您说对了,他们果然是有问题:我编译完,报无法定位程序输入点‘RegistCallBack’与动态链接库'MultiTouchSDK.dll'上。请大侠看看
 
你要把 MultiTouchSDK.dll 与你的程序放在同一个文件夹里,还有要安装它的驱动。2、使用条件要使用以上SDK,首先要安装益图电子的多点触摸驱动程序。装好驱动后,运行编译好的应用程序即可实现多点触摸功能。
 
你把驱动的安装文件也放到笔记里,我看看能否使用。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
I
回复
0
查看
451
import
I
D
回复
0
查看
1K
DelphiTeacher的专栏
D
顶部