Habt ihr nicht auch schon mal darüber nachgedacht, ein Kartenspiel zu programmieren und euch gefragt, ob man irgendwie die Karten der Windows-Spiele (Hearts/Solitär) benutzen kann?
Nun, ich bin auf eine Lösung gestoßen:
Folgendes in ein Modul:
<pre>
Option Explicit
Public Declare Function cdtInit Lib "Cards.dll" (dx As Long, dy As Long) As Boolean
Public Declare Function cdtDraw Lib "Cards.dll" (ByVal hDC As Long, ByVal X As Long, ByVal y As Long, _
ByVal ordCard As Long, ByVal ordDraw As Long, ByVal clr As Long) As Boolean
Public Declare Function cdtTerm Lib "Cards.dll" () As Integer</pre>
Dann der Aktivierungscode:
<pre>
Private Sub Command1_Click()
Dim RetVal As Boolean
Dim dxCard As Long, dyCard As Long
Dim KartenNr As Integer
Me.ScaleMode = vbPixels
picKarte.ScaleMode = vbPixels
RetVal = cdtInit(dxCard, dyCard)
picKarte.Width = dxCard
picKarte.Height = dyCard
KartenNr = Int(Rnd * 52)
RetVal = cdtDraw(picKarte.hDC, 0, 0, KartenNr, 0, 0&)
picKarte.Refresh
RetVal = cdtTerm()
End Sub
</pre>
mfG,
Malcolm
P.S.: Wichtig: Ihr braucht dafür die Cards.dll einer Windows 2000 / NT - Version, da die anderen (95/98-) DLLs 16-Bit-Versionen sind und unter dem 32-Bit-Vb nicht aufgerufen werden können (ich schicke Euch die DLL auf Anfrage per Mail).
Nachtrag: Die AutoRedraw-Eigenschaft der Picutrebox muss auf "True" stehen.
Nun, ich bin auf eine Lösung gestoßen:
Folgendes in ein Modul:
<pre>
Option Explicit
Public Declare Function cdtInit Lib "Cards.dll" (dx As Long, dy As Long) As Boolean
Public Declare Function cdtDraw Lib "Cards.dll" (ByVal hDC As Long, ByVal X As Long, ByVal y As Long, _
ByVal ordCard As Long, ByVal ordDraw As Long, ByVal clr As Long) As Boolean
Public Declare Function cdtTerm Lib "Cards.dll" () As Integer</pre>
Dann der Aktivierungscode:
<pre>
Private Sub Command1_Click()
Dim RetVal As Boolean
Dim dxCard As Long, dyCard As Long
Dim KartenNr As Integer
Me.ScaleMode = vbPixels
picKarte.ScaleMode = vbPixels
RetVal = cdtInit(dxCard, dyCard)
picKarte.Width = dxCard
picKarte.Height = dyCard
KartenNr = Int(Rnd * 52)
RetVal = cdtDraw(picKarte.hDC, 0, 0, KartenNr, 0, 0&)
picKarte.Refresh
RetVal = cdtTerm()
End Sub
</pre>
mfG,
Malcolm
P.S.: Wichtig: Ihr braucht dafür die Cards.dll einer Windows 2000 / NT - Version, da die anderen (95/98-) DLLs 16-Bit-Versionen sind und unter dem 32-Bit-Vb nicht aufgerufen werden können (ich schicke Euch die DLL auf Anfrage per Mail).
Nachtrag: Die AutoRedraw-Eigenschaft der Picutrebox muss auf "True" stehen.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Malcolm“ ()