我
我心飞翔
Unregistered / Unconfirmed
GUEST, unregistred user!
我要调用一个DLL,但老是出错。麻烦帮我看下,如下:
(厂家提供的)---------------------------------
1.字体类型
typedef struct _ZmjFontType
{
BYTE byFontType;//字体 01: 6*7点阵英文 02:16点阵汉字 03:24点阵汉字
BYTE byFontSpace;//字间距 0---128
BYTE byColor;//字体颜色 双色字幕机 0:黑 1:红 2:绿 3:黄 单色字幕机 0:黑 1:红 2:黑 3:红
BYTE byMode;//出字方式 1 --- 18(参见表一)
BYTE byRate
//出字速度 0 --- 9
BYTE byFormat
//对齐方式 1. 居左上显示 2. 居左上显示 3. 居右上显示
4. 居左显示 5. 居中显示 6. 居右显示
7. 居左下显示 8. 居下方显示 9. 居右下显示
}ZmjFontType
2.字体参数
typedef struct _ZmjFontStyle
{
BYTE byReverse; //是否反相 0:不反相 1:反相
BYTE byBiLines; //是否双线体 0:普通 1:双线体
BYTE byWidthScale; //水平放大倍数 1---9
}ZmjFontStyle;
3.窗口位置
typedef struct _ZmjWindow
{
WORD wLeft
//左上角x坐标
WORD wTop; //左上角y坐标
WORD wRight; //右下角x坐标
WORD wBottom //右下角y坐标;
// BYTE bClear;
}ZmjWindow;
显示文字:
c函数原型 int __stdcall ZmjTextWindow(ZmjFontType myFontType,ZmjFontStyle myFontStyle,BYTE* lpszText,ZmjWindow myZmjWindow);
vb函数原型 Declare Function ZmjTextWindow Lib "zmjdll" (myFontType As ZmjFontType, myFontStyle As ZmjFontStyle, ByVal lpszText As String, myZmjWindow As ZmjWindow) As Long
返回值:1 7 8 9 10 11 12 13 14 16
-----------------------------------------------------------------------
我的调用过程:
TZmjTextWindow = Function (
myFontType:ZmjFontType;
myFontStyle:ZmjFontStyle;
var lpszText:String;
myZmjWindow:ZmjWindow):Integer
stdcall;
EDllLoadError = class(Exception);
//开始用
var
LibHandle : THandle;
ZmjTextWindow:TZmjTextWindow;
begin
Libhandle := LoadLibrary('zmjdll.dll');
try
if Libhandle=0 then raise EDllLoadError.Create('Unable to Load DLL');
@ZmjTextWindow := GetProcAddress(Libhandle,'ZmjTextWindow');
if Not (@ZmjTextWindow=nil) then
nRetCode := ZmjTextWindow(myZmjFontType,myZmjFontStyle,strText,myZmjWindow)
else
....
finally
freelib......
end
end;
其中myZmjFontType,myZmjFontStyle,myZmjWindow我没有初始化,提供的VB源代码也没有初始化也一样可以运行。
(厂家提供的)---------------------------------
1.字体类型
typedef struct _ZmjFontType
{
BYTE byFontType;//字体 01: 6*7点阵英文 02:16点阵汉字 03:24点阵汉字
BYTE byFontSpace;//字间距 0---128
BYTE byColor;//字体颜色 双色字幕机 0:黑 1:红 2:绿 3:黄 单色字幕机 0:黑 1:红 2:黑 3:红
BYTE byMode;//出字方式 1 --- 18(参见表一)
BYTE byRate
//出字速度 0 --- 9
BYTE byFormat
//对齐方式 1. 居左上显示 2. 居左上显示 3. 居右上显示
4. 居左显示 5. 居中显示 6. 居右显示
7. 居左下显示 8. 居下方显示 9. 居右下显示
}ZmjFontType
2.字体参数
typedef struct _ZmjFontStyle
{
BYTE byReverse; //是否反相 0:不反相 1:反相
BYTE byBiLines; //是否双线体 0:普通 1:双线体
BYTE byWidthScale; //水平放大倍数 1---9
}ZmjFontStyle;
3.窗口位置
typedef struct _ZmjWindow
{
WORD wLeft
//左上角x坐标
WORD wTop; //左上角y坐标
WORD wRight; //右下角x坐标
WORD wBottom //右下角y坐标;
// BYTE bClear;
}ZmjWindow;
显示文字:
c函数原型 int __stdcall ZmjTextWindow(ZmjFontType myFontType,ZmjFontStyle myFontStyle,BYTE* lpszText,ZmjWindow myZmjWindow);
vb函数原型 Declare Function ZmjTextWindow Lib "zmjdll" (myFontType As ZmjFontType, myFontStyle As ZmjFontStyle, ByVal lpszText As String, myZmjWindow As ZmjWindow) As Long
返回值:1 7 8 9 10 11 12 13 14 16
-----------------------------------------------------------------------
我的调用过程:
TZmjTextWindow = Function (
myFontType:ZmjFontType;
myFontStyle:ZmjFontStyle;
var lpszText:String;
myZmjWindow:ZmjWindow):Integer
stdcall;
EDllLoadError = class(Exception);
//开始用
var
LibHandle : THandle;
ZmjTextWindow:TZmjTextWindow;
begin
Libhandle := LoadLibrary('zmjdll.dll');
try
if Libhandle=0 then raise EDllLoadError.Create('Unable to Load DLL');
@ZmjTextWindow := GetProcAddress(Libhandle,'ZmjTextWindow');
if Not (@ZmjTextWindow=nil) then
nRetCode := ZmjTextWindow(myZmjFontType,myZmjFontStyle,strText,myZmjWindow)
else
....
finally
freelib......
end
end;
其中myZmjFontType,myZmjFontStyle,myZmjWindow我没有初始化,提供的VB源代码也没有初始化也一样可以运行。