再问Cards.dll的使用?(100分)

  • 主题发起人 主题发起人 happy_boy
  • 开始时间 开始时间
H

happy_boy

Unregistered / Unconfirmed
GUEST, unregistred user!
看了本认谈的以前的关于Cards.dll文件的应用的讨论,可是到头到还是没找到
答案,
var Linstance:Hmodule;
begin
Linstance:=LoadLibrary('C:/WINDOWS/SYSTEM/CARDS.DLL');
Image1.Picture.Bitmap.LoadFromResourceID(Linstance,1);
end;
在98下为什么不行呀?Linstance总是0,请大位帮忙。
 
'C:/WINDOWS/SYSTEM/CARDS.DLL'是不是存在,
不存在就没法Load
 
存在,一定是存在的,在NT与2000下没有问题,可98不行呀?
 
问题找到了:

你看看帮助,里面有这么一句话:
Windows 95: If you are using LoadLibrary to load a module that contains a resource
whose numeric identifier is greater than 0x7FFF, LoadLibrary fails.

就是这个原因。
 
那如何解决呢?
 
在WIN98下是解决不了的,这与许多的API函数在WIN98下不适合一样的道理。
 
本想试一下,没想到机器里没有这个文件。[:(]
 
真的没办法解决呀?我看好像有个单元文件那像是谁封装的,
叫什么Cards.dll,说是可以用,可是我还是不能用呀?unit Unit2;
{ CARDS.DLL - Card Display Technology }
{ notes:
copy from newgroup Author: Jeroen Pluimers (jeroenp@dragons.nest.nl)
- CARDS.DLL is 16-bit in Win95!
}
interface

uses
WinTypes;

const
idClubsAce = 1;
idClubs2 = 2;
idClubs3 = 3;
idClubs4 = 4;
idClubs5 = 5;
idClubs6 = 6;
idClubs7 = 7;
idClubs8 = 8;
idClubs9 = 9;
idClubs10 = 10;
idClubsJack = 11;
idClubsQueen = 12;
idClubsKing = 13;

idDiamondsAce = 14;
idDiamonds2 = 15;
idDiamonds3 = 16;
idDiamonds4 = 17;
idDiamonds5 = 18;
idDiamonds6 = 19;
idDiamonds7 = 20;
idDiamonds8 = 21;
idDiamonds9 = 22;
idDiamonds10 = 23;
idDiamondsJack = 24;
idDiamondsQueen = 25;
idDiamondsKing = 26;

idHeartsAce = 27;
idHearts2 = 28;
idHearts3 = 29;
idHearts4 = 30;
idHearts5 = 31;
idHearts6 = 32;
idHearts7 = 33;
idHearts8 = 34;
idHearts9 = 35;
idHearts10 = 36;
idHeartsJack = 37;
idHeartsQueen = 38;
idHeartsKing = 39;

idSpadesAce = 40;
idSpades2 = 41;
idSpades3 = 42;
idSpades4 = 43;
idSpades5 = 44;
idSpades6 = 45;
idSpades7 = 46;
idSpades8 = 47;
idSpades9 = 48;
idSpades10 = 49;
idSpadesJack = 50;
idSpadesQueen = 51;
idSpadesKing = 52;

RankFirst = idClubsAce;
RankLast = idClubsKing;
RankCount = RankLast - RankFirst + 1;

idFaceFirst = idClubsAce;
idFaceLast = idSpadesKing;
FaceCount = idFaceLast - idFaceFirst;

SuitCount = 4;

idDeckEmpty = 53; { $35 }
idDeckPattern1 = 54; { $36 }
idDeckPattern2 = 55; { $37 }
idDeckRobot = 56; { $38 }
idDeckRoses = 57; { $39 }
idDeckFlowers1 = 58; { $3A }
idDeckFlowers2 = 59; { $3B }
idDeckFishes = 60; { $3C }
idDeckAquarium = 61; { $3D }
idDeckShell = 62; { $3E }
idDeckCastle = 63; { $3F }
idDeckPalmbeach = 64; { $40 }
idDeckCardhand = 65; { $41 }
{ there is no card# 66 }
idDeckCross = 67; { $43 }
idDeckCircle = 68; { $44 }

idDeckFirst = idDeckEmpty;
idDeckLast = idDeckCardhand;
DeckCount = idDeckLast - idDeckFirst + 1;

idDeckSpecialFirst = idDeckCross;
idDeckSpecialLast = idDeckCircle;
DeckSpecialCount = idDeckSpecialLast - idDeckSpecialFirst + 1;

idAnimateCardhand1 = 678; { $02A6 }
idAnimateCardhand2 = 679; { $02A7 }
idAnimateCastle = 680; { $02A8 }
idAnimateSunSmile = 681; { $02A9 }
idAnimateSunSmileTongue = 682; { $02AA }
idAnimateRobot1 = 683; { $02AB }
idAnimateRobot2 = 684; { $02AC }

type
TCardId = Cardinal; { Win32 - 31-bit unsigned integer
Win16 - 16-bit unsigned integer }
TCardMode = Cardinal; { Win32 - 31-bit unsigned integer
Win16 - 16-bit unsigned integer }
TCoordinate = Integer; { Win32 - 32-bit signed integer
Win16 - 16-bit signed integer }

function cdtInit(var CardWidth, CardHeight: TCoordinate): Bool; {$ifdef
Win32} stdcall; {$endif Win32}
function cdtDraw(aDC: HDC; X,Y: TCoordinate; Card: TCardId;
Mode: TCardMode; Color: TColorRef): Bool; {$ifdef Win32} stdcall; {$endif
Win32}
function cdtDrawExt(aDC: HDC; X,Y,Width,Height: TCoordinate; Card: TCardId;
Mode: TCardMode; Color: TColorRef): Bool; {$ifdef Win32} stdcall; {$endif
Win32}
procedure cdtTerm; {$ifdef Win32} stdcall; {$endif Win32}
function cdtAnimate(aDC: HDC; Card: TCardId; X, Y: TCoordinate;
AnimateIndex: Word): Bool; {$ifdef Win32} stdcall; {$endif Win32}

implementation

const
{$ifdef win32}
sCardsDLL = 'CARDS.DLL';
{$else}
sCardsDLL = 'CARDS';
{$endif win32}

{$ifdef win32}
function cdtInit; external sCardsDLL name 'cdtInit';
function cdtDraw; external sCardsDLL name 'cdtDraw';
function cdtDrawExt; external sCardsDLL name 'cdtDrawExt';
procedure cdtTerm; external sCardsDLL name 'cdtTerm';
function cdtAnimate; external sCardsDLL name 'cdtAnimate';
{$else}
function cdtInit; external sCardsDLL index 1;
function cdtDraw; external sCardsDLL index 2;
function cdtDrawExt; external sCardsDLL index 3;
procedure cdtTerm; external sCardsDLL index 4;
function cdtAnimate; external sCardsDLL index 5;
{$endif win32}

end.
知道如何用吗/
 
接受答案了.
 
后退
顶部