Sô ----------------------------------------------------------------------------- ô | CARDS.H ô | %ô | cards.dll external .h file ô | .ô | Insert standard MS copyright BS here. Sô ----------------------------------------------------------------------------- : ô Setup constants Ý òcdtConst : /ô PROCcdtDraw and PROCcdtDrawExt mode flags LmdFaceUp = 0 : ô Draw card face up, card to draw specified by cd hmdFaceDown = 1 : ô Draw card face down, back specified by cd (cdFaceDownFirst..cdFaceDownLast) MmdHilite = 2 : ô Same as FaceUp except drawn with NOTSRCCOPY mode ?mdGhost = 3 : ô Draw a ghost card -- for ace piles AmdRemove = 4 : ô draw background specified by rgbBgnd LmdInvisibleGhost = 5 : ô Draw empty card spot but don't paint background #mdDeckX = 6 : ô Draw X #mdDeckO = 7 : ô Draw O : :ô Suit and card indices. Orders of BOTH are important suClub = 0 suDiamond = 1 suHeart = 2 suSpade = 3 suMax = 4 suFirst = suClub raAce = 0 raTwo = 1 raThree = 2 raFour = 3 raFive = 4 raSix = 5 raSeven = 6 raEight = 7 raNine = 8 raTen = 9 raJack = 10 raQueen = 11 raKing = 12 raMax = 13 raNil = 15 raFirst = raAce  ô Card IDs ,cdAClubs = ¤cdtCd(raAce, suClub) ,cd2Clubs = ¤cdtCd(raTwo, suClub) ,cd3Clubs = ¤cdtCd(raThree, suClub) ,cd4Clubs = ¤cdtCd(raFour, suClub) ,cd5Clubs = ¤cdtCd(raFive, suClub) ,cd6Clubs = ¤cdtCd(raSix, suClub) ,cd7Clubs = ¤cdtCd(raSeven, suClub) ,cd8Clubs = ¤cdtCd(raEight, suClub) ,cd9Clubs = ¤cdtCd(raNine, suClub) ,cdTClubs = ¤cdtCd(raTen, suClub) ,cdJClubs = ¤cdtCd(raJack, suClub) ,cdQClubs = ¤cdtCd(raQueen, suClub) ,cdKClubs = ¤cdtCd(raKing, suClub) /cdADiamonds = ¤cdtCd(raAce, suDiamond) /cd2Diamonds = ¤cdtCd(raTwo, suDiamond) /cd3Diamonds = ¤cdtCd(raThree, suDiamond) /cd4Diamonds = ¤cdtCd(raFour, suDiamond) /cd5Diamonds = ¤cdtCd(raFive, suDiamond) /cd6Diamonds = ¤cdtCd(raSix, suDiamond) /cd7Diamonds = ¤cdtCd(raSeven, suDiamond) /cd8Diamonds = ¤cdtCd(raEight, suDiamond) /cd9Diamonds = ¤cdtCd(raNine, suDiamond) /cdTDiamonds = ¤cdtCd(raTen, suDiamond) /cdJDiamonds = ¤cdtCd(raJack, suDiamond) /cdQDiamonds = ¤cdtCd(raQueen, suDiamond) /cdKDiamonds = ¤cdtCd(raKing, suDiamond) -cdAHearts = ¤cdtCd(raAce, suHeart) -cd2Hearts = ¤cdtCd(raTwo, suHeart) -cd3Hearts = ¤cdtCd(raThree, suHeart) -cd4Hearts = ¤cdtCd(raFour, suHeart) -cd5Hearts = ¤cdtCd(raFive, suHeart) -cd6Hearts = ¤cdtCd(raSix, suHeart) -cd7Hearts = ¤cdtCd(raSeven, suHeart) -cd8Hearts = ¤cdtCd(raEight, suHeart) -cd9Hearts = ¤cdtCd(raNine, suHeart) -cdTHearts = ¤cdtCd(raTen, suHeart) -cdJHearts = ¤cdtCd(raJack, suHeart) -cdQHearts = ¤cdtCd(raQueen, suHeart) -cdKHearts = ¤cdtCd(raKing, suHeart) -cdASpades = ¤cdtCd(raAce, suSpade) -cd2Spades = ¤cdtCd(raTwo, suSpade) -cd3Spades = ¤cdtCd(raThree, suSpade) -cd4Spades = ¤cdtCd(raFour, suSpade) -cd5Spades = ¤cdtCd(raFive, suSpade) -cd6Spades = ¤cdtCd(raSix, suSpade) -cd7Spades = ¤cdtCd(raSeven, suSpade) -cd8Spades = ¤cdtCd(raEight, suSpade) -cd9Spades = ¤cdtCd(raNine, suSpade) -cdTSpades = ¤cdtCd(raTen, suSpade) -cdJSpades = ¤cdtCd(raJack, suSpade) -cdQSpades = ¤cdtCd(raQueen, suSpade) -cdKSpades = ¤cdtCd(raKing, suSpade)  ô Face down cards cdFaceDown1 = 54 cdFaceDown2 = 55 cdFaceDown3 = 56 cdFaceDown4 = 57 cdFaceDown5 = 58 cdFaceDown6 = 59 cdFaceDown7 = 60 cdFaceDown8 = 61 cdFaceDown9 = 62 cdFaceDown10 = 63 cdFaceDown11 = 64 cdFaceDown12 = 65 !cdFaceDownFirst = cdFaceDown1 "cdFaceDownLast = cdFaceDown12 á : "ô Return suit from card number )Ý ¤cdtSuFromCd(card%) = ((card%) € 3) : "ô Return rank from card number *Ý ¤cdtRaFromCd(card%) = ((card%) >> 2) : +ô Return card number from rank and suit 9Ý ¤cdtCd(rank%, suit%) = (((rank%) << 2) „ (suit%)) : @ô Load and initialise cards32.dll call once at program start Ý òcdtInit : ô Load library / "LoadLibrary","CARDS32.DLL" ¸ hdll_cards% =ç hdll_cards%=0 "LoadLibrary","CARDS.DLL" ¸ hdll_cards% mç hdll_cards%=0 … 0, "This program requires Cards32.dll or Cards.dll to be present in the same directory" : Iô One time initialization function. Also returns dimensions of a card 8 "GetProcAddress",hdll_cards%, "cdtInit" ¸ cdtinit% ô Draws a card 8 "GetProcAddress",hdll_cards%, "cdtDraw" ¸ cdtdraw% Iô Same as cdtDraw except will stretch the card by an arbitrary extent > "GetProcAddress",hdll_cards%, "cdtDrawExt" ¸ cdtdrawext% /ô Draws the animation on the back of a card > "GetProcAddress",hdll_cards%, "cdtAnimate" ¸ cdtanimate% (ô One time uninitialization function 8 "GetProcAddress",hdll_cards%, "cdtTerm" ¸ cdtterm% : cdtWidth%=0:cdtHeight%=0 , cdtinit%,^cdtWidth%,^cdtHeight% ¸ res% : cdtRedraw%=¹ : òcdtConst á : ô Draw a card 1Ý òcdtDrawEx(hdc%,x%,y%,rank%,suit%,md%,rgb%) ê card%:card%=face%*4+suit% )Ý òcdtDraw(hdc%,x%,y%,card%,md%,rgb%) ( cdtdraw%,hdc%,x%,y%,card%,md%,rgb% =ç cdtRedraw% Œ òcdtRedrawArea(x%,y%,cdtWidth%,cdtHeight%) á : Iô Same as cdtDraw except will stretch the cards to an arbitray extent <Ý òcdtDrawExtEx(hdc%,x%,y%,dx%,dy%,rank%,suit%,md%,rgb%) ê card%:card%=face%*4+suit% 4Ý òcdtDrawExt(hdc%,x%,y%,dx%,dy%,card%,md%,rgb%) 3 cdtdrawext%,hdc%,x%,y%,dx%,dy%,card%,md%,rgb% 0ç cdtRedraw% Œ òcdtRedrawArea(x%,y%,dx%,dy%) á  -ô Draws the animation on a supported card )Ý òcdtAnimate(hdc%,card%,x%,y%,ispr%) ( cdtanimate%,hdc%,card%,x%,y%,ispr% =ç cdtRedraw% Œ òcdtRedrawArea(x%,y%,cdtWidth%,cdtHeight%) á  "ô Call once at app termination Ý òcdtTerm  cdtterm% . "FreeLibrary",hdll_cards% : ô Unload DLL á : ,ô Redraw the selected area of the screen #Ý òcdtRedrawArea(x%,y%,dx%,dy%) ê rect% Þ rect% ê 16 7!rect%=x%:rect%!4=y%:rect%!8=x%+dx%:rect%!12=y%+dy% ( "InvalidateRect", @hwnd%, rect%, 0 á : ô Redraw the entire screen Ý òcdtRedrawAll $ "InvalidateRect", @hwnd%, 0, 0 á : #ô Set the automatic redraw flag Ý òcdtRedraw(bool%) cdtRedraw%=bool% á ÿÿ