Use 资源编辑器打开Cards.dll得到各张卡片的IDvar
hLib:HINSTANCE;
hBmp:TBitMap; hLib:=LoadLibrary('qumueng.dll');
hBmp:=TBitMap.Create;
hBmp.LoadFromResourceID((hlib,cardID); hBmp.Free;
FreeLibaray;
hLib:HINSTANCE;
hBmp:TBitMap; hLib:=LoadLibrary('qumueng.dll');
hBmp:=TBitMap.Create;
hBmp.LoadFromResourceID((hlib,cardID); hBmp.Free;
FreeLibaray;
解决方案 »
- 求解
- quickreport 如何一页只打印一条记录,有几条打印几页
- 关于查询问题,在线等,急
- EhLib导出的Rtf文件为乱码,如何解决?
- 用Delphi如何让电脑主板发声。(注意,是主板发声,不是用扬声器发声。)
- 在其它开发平台下调用 Delphi 编写的DLL问题
- delphi中与inc相反地自减函数是什么
- 网友,你们知道文件扩展名为fpg(*.fpg)的文件,是用哪种工具编写,我怎样找到它或怎样打开此种文件
- 招聘程序员 工资不会很高
- 200分,求一段代码,要求将指定目录下的文件改名,如program23.dat 改名为11.program23.uml
- 请教WINDOWS的CARDS.DLL的用法
- 求和?
这个问题你应该去看书!!!马上想得到的使用说明有以下几点:1. 所需动态连结的 DLL 须置放在与执行档同一目录或Windows System 目录2. 确认 DLL export 出来的函式的原型, 以目前的情况而言, 通常只拿得到 C语言的函数原型,这时要注意 C 与 object Pascal 相对应的型别, 如果需要, 在interface 一节定义所需的资料类别3. 在 implementation 节中宣告欲使用的函式, 语法大致如下:procedure ProcName(Argu...); far; external 'DLL档名';index n;function FuncName(Argr...): DataType; far;
//注意应该用stdcall for Win95 ...jt...
external 'DLL档名'; index n;宣告时, index n 如果不写, 便是参考资料中所谓 import by name 的方式, 此时, 由於需要从 DLL 的 name table 中找出这个函式, 因此, 连结执行速度比import by ordinal稍慢一些, 此外, 还有一种 by new name, 由於我没用过, 您可以查一参考资料, 大意是可以 import 後改用另一个程式命名呼叫这个函式4. 然後, 呼叫与使用就与一般的Delphi 没有两样5. 上述是直接写到呼叫DLL函式的程式单元中, 此外,也可以将DLL的呼叫宣告集中到一个程式单元(Import unit), Delphi 内附的 WinTypes, WinProcs是一个例子,您可以参考一下,同时观察一下 C 与 Pascal 互相对应的资料型态6. 除了上述的 static import 的方式, 另外有一种 dynamic import 的写法,先宣告一个程序类型(procedural-type),程式执行时, 以 LoadLibrary() API Load进来後, 再以 GetProcAddress() API 取得函式的位址的方式来连结呼叫, 在ObjectPascal Language Guide P.132-133 有一个例子, 您可以参考看看如果要举个例子, 以下是从我以前的程式节录出来的片断:(* for CWindows 3.1 *)unit Ime31;interfaceusesSysUtils, WinTypes, WinProcs, Dialogs;type(* 必要的资料型态宣告 *)tDateNTime = recordwYear, wMonth, wDay: word;wHour, wMin, wSec: word;end;TImePro = recordhWndIme: HWnd; { IME handle }dtInstDate: tDateNTime; { Date and time of installation }wVersion: word; { the version of IME }szDescription: array[0..49] of byte; { Description of IME module}szName: array[0..79] of byte; { Module name of the IME }szOptions: array[0..29] of byte; { options of IME at startup}fEnable: boolean; { IME status; True=activated,False=deactivated }end;pTImePro = ^TImePro;function SetIme(const sImeFileName: string): boolean; far;implementation(* begin 呼叫 winnls.dll export 函数的宣告 *)function ImpSetIme(hWndIme: HWND; lpImePro: pTImePro): boolean;far; external 'winnls.dll';(* end 呼叫 winnls.dll export 函数的宣告 *)(* -------------------------------------------------- *)(* SetIme(const sImeFileName: string): boolean;(* ======(* 切换到某一特定的输入法(*(* 传入引数:(* sImeFileName: 输入法 IME 档名, 例: phon.ime;(* 空字串: 英数输入法(*(* 传回值:(* True: 切换成功(* False: 失败(* -------------------------------------------------- *)function SetIme(const sImeFileName: string): boolean;varpImePro: pTImePro;beginResult := False;if MaxAvail < SizeOf(TImePro) thenbeginMessageDlg('记忆体不足', mtWarning, [mbOk], 0);Exit;endelsebeginNew(pImePro);tryif sImeFileName = '' then (* 空字串, 还原到英数输入法 *)pImePro^.szName[0] := 0elseStrPCopy(@pImePro^.szName, sImeFileName);Result := ImpSetIme(0, pImePro); (* 呼叫 ImpSetIme *)finallyDispose(pImePro);end; { of try }end;end; { of SetIme }end.
图像显示用Bitblt速度最快!