Avatar billede delphidaner Nybegynder
08. maj 2000 - 14:35 Der er 15 kommentarer og
1 løsning

Spillekort i et program

Jeg vil gerne lave et program, som bruger de der standard Windows Spillekort, som bl.a. 7-kabale og Hjerterfri bruger.

Hvordan gør jeg det? Skal jeg indlæse dem fra en ressourcefil eller hvad?

Hvordan bruges de? Er det objekter eller almindelige bitmaps, som jeg får?
Avatar billede blackthorne Nybegynder
08. maj 2000 - 15:07 #1
spillekortene er vist nok en active x kontrol, som du kan importer ind i delphi via import activeX control, dog kan jeg ikke huske navnet på activeX kontrollen da, jeg ikke har nogle windowsspil installeret.
Avatar billede lrj Nybegynder
08. maj 2000 - 18:10 #2
Mener de ligger i cards.dll, men jeg er da ikke sikker :=)
Avatar billede delphidaner Nybegynder
09. maj 2000 - 07:48 #3
Hvordan importerer jeg en ActiveX-control? (jeg har ingen erfaring vedr. ActiveX)
Avatar billede delphidaner Nybegynder
10. maj 2000 - 11:45 #4
Spørgsmålet er stadig åbent! Hvis ingen kan hjælpe mig, så lukker jeg det snart.
Avatar billede lrj Nybegynder
10. maj 2000 - 12:11 #5
delphidaner - prøv lige at læse blackthorne's indlæg igen - der står rent faktisk hvordan du gør - det er via et menupunkt i Delphi :)
Avatar billede delphidaner Nybegynder
10. maj 2000 - 14:32 #6
OK, jeg prøver lige at rode lidt med det igen.
Avatar billede blackthorne Nybegynder
10. maj 2000 - 16:06 #7
i denne link ligger der kapiteler fra DDG5 bogen http://www.xapware.com/ddg/CD_Chapters/D5DG_CD.zip, og der et en meget udførligt eksempel (helt kapitel) hvordan spillekortene hentes ind i delphi
Avatar billede delphidaner Nybegynder
11. maj 2000 - 07:44 #8
Tak for det Blackthorne. Jeg kunne ikke få det til at virke.
Avatar billede delphidaner Nybegynder
11. maj 2000 - 07:53 #9
Altså det andet. Jeg checker lige ZIP'en.
Avatar billede michaelras Nybegynder
11. maj 2000 - 12:35 #10
Cards.dll (den der følger med windows) er IKKE en ActiveX, men derimod en standard windows DLL fil.
Problemet med den ved brug i DElphi er: den er 16-bit, så hvis du har mod på thunking kan jeg godt give dig funktions deklarationerne og hvordan de forskellige funktioner skal bruges

Michael

PS: Hvis du bruger Windows 2000 er der ikke det samme problem, da cards.dll filen er blevet opdateret til 32-bit
Burde være muligt at kopiere cards.dll fra Win2k til win9x, evt omdøbe den til noget a la cards32.dll og så importete funktionerne som hvilken som helst alm. 32-bit DLL... Men er det lovligt ang licens (kopiere fil fra Win2k installation til Win9x)... ??
Avatar billede delphidaner Nybegynder
11. maj 2000 - 14:24 #11
Nu prøver jeg lige at læse det der står om ActiveX fra Blackthorne. Så får vi at se, om jeg kan få det til at virke.
Avatar billede delphidaner Nybegynder
12. maj 2000 - 07:49 #12
Jeg har læst ActiveX-delen af den tutorial, som blackthorne lavede en link til, og i den tutorial importerer man AxCard.ocx, og den har jeg ikke.

Jeg har åbnet Hjerterfri med en Hex Editor, og konstateret at den bruger cards.dll. Men den kan jeg ikke importere! (jeg tror ikke at den overhovedet vil have DLLs).
Avatar billede michaelras Nybegynder
12. maj 2000 - 10:34 #13
her er definationerne på de forskellige funktioner i 32-bit versionen af cards.dll (cards32.dll)

function cdtInit (var Width, Height : Integer) : Integer; stdcall; external 'cards32.dll';
function cdtDraw (DC : THandle; x, y, Card, DrawType, BgColor : Integer) : Integer; stdcall; external 'cards32.dll';
function cdtDrawExt (DC : THandle; x, y, Width, Height, Card, DrawType, BgColor : Integer) : Integer; stdcall; external 'cards32.dll';
function cdtTerm : Integer; stdcall; external 'cards32.dll';

cards32.dll initialiseres med cdtInit, som giver standard Width og Height (W: 71, H: 96)
Returnerer True (1) hvis vellykket

cdtDraw funktionen tegner det valgte kort på DC'en:
Returnerer True (1) hvis vellykket
DC      : DC (fx Canvas.Handle)
x, y    : x og y koordinator for øverste venstre hjørne af kortet
Card    : nummer mellem 0 og 51:
            Klør Es, Ruder Es, Hjerter Es, Spas Es, Klør 2, Ruder 2 osv osv
            (altså klør es = 0, ruder es = 1 osv.)
          nummer mellem 53 og 68:
            53 : sort kort
            54 - 65 : de forskellige baggrunde
            66 : ingenting
            67 : rødt kruds
            68 : grøn bolle
DrawType : hvis Card er > 51:
              DrawType = 1 : vis valgte baggrundsbilled
          hvis Card er <= 51:
              DrawType = 0 : Vis normal kort
              DrawType = 2 : Negative farver
          Uafhængig af hvad Card er:
              DrawType = 3 : Sort mønster på BgColor farvet baggrund
              DrawType = 4 : farvet kort - tror det er komplementær til BgColor
              DrawType = 5 : Sort mønster på den farve som DrawType = 4 har
              DrawType = 6 : Viser kort 67
              DrawType = 7 : Viser kort 68
BgColor : Kun nødvendig ved DrawType = 3, 4 eller 5

cdtDrawExt funktionen virker som cdtDraw, men her er der også mulighed for at bestemme width og height
Returnerer True (1) hvis vellykket

cdtTerm
Terminerer cards32.dll - noget a la objekt.Free;
Returnerer True (1) hvis vellykket

cards32.dll kan du hente her: http://anykey.2y.net/~mr/cards32.zip
... fandt den på MicroSoft's hjemmeside - et eller andet sted i rodet

Det var vist det...

Michael
Avatar billede delphidaner Nybegynder
12. maj 2000 - 10:49 #14
Tak for hjælpen alle sammen. Nu skal det nok virke!
Avatar billede delphidaner Nybegynder
15. maj 2000 - 07:48 #15
Det virker upåklageligt!
Avatar billede michaelras Nybegynder
15. maj 2000 - 16:20 #16
Rart at høre....

Glad jeg kunne hjælpe

Michael
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester