各位大侠帮我看这个问题 (100分)

  • 主题发起人 主题发起人 我心飞翔
  • 开始时间 开始时间

我心飞翔

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源代码也没有初始化也一样可以运行。
 
用静态方式调用这个DLL的函数看看。
 
我用的静态调用的方法是这样,也是出同样的错误,读地址错误。
Function ZmjMydateWindow(
myFontType:TZmjFontType;
myFontStyle:TZmjFontStyle;
wMydataType:Integer;
myZmjWindow:TZmjWindow):Word;stdcall;

implementation

Function ZmjTextWindow;external 'zmjdll.dll' name 'ZmjTextWindow';

 
怎么没有人回答???
 
问题我自己已经解决。
 
后退
顶部