Playing Card Sample Control =========================== This sample ActiveX Control implements a standard playing card, with the ability to show the standard 52 card deck, two jokers, and 13 different card backs. This control is a Windowless control, which uses transparency to create the missing card corner effect. Building -------- To build card.ocx, the FrameWrk sample must first be built. First run \inetsdk\setenv.bat to be sure the ActiveX SDK include, bin, and lib directories are included (first) in your environment. Run the 'nmake' to build a debug version (built to the Debug subdirectory) or 'nmake nodebug=1' to build a retail (nodebug) directory into the Retail subdirectory. After building the FrameWrk library you can build the Card control by running 'nmake' or 'nmake nodebug=1'. Sample: ActiveX Video Poker --------------------------- Included is a sample application which uses card.ocx: ActiveX Video Poker. To run this application, open poker\poker.htm. This application also depends on the ielabel control and ietimer control. To debug and work with this example, open poker\main.htm. This file can be used outside of the framesets provided by poker.htm. Sample: ActiveX Solitaire ------------------------- Included is a sample application which uses card.ocx: ActiveX Solitaire. To run this application, open solitair\sol.htm. This application also depends on the ietimer control and the HTML Layout Control. Using the Card Control ---------------------- The Card control is itself controlled through 3 properties: Suite -- Enum: 0 = Invisible (card not drawn) 1 = Clubs 2 = Spades 3 = Hearts 4 = Diamonds -1 to -13 = Card Backs Number -- Enum: 1 = Ace 2 to 10 = Number Cards 11 = Jack 12 = Queen 13 = King 14 = Joker Invert -- Boolean: controls drawing the card inverted, to indicate selection CardAlignment -- Enum: 0 = Top Left 1 = Top Center 2 = Top Right 3 = Center Left 4 = Center 5 = Center Right 6 = Bottom Left 7 = Bottom Center 8 = Bottom Right 9 = Stretch By default the card starts in the transparent state. Setting the Suite to any value other than zero will draw the card. A property page is also included with the control, which can simply picking the right property values. The card control will also fire the following events: Click -- Mouse Click DblClick -- Mouse Double Click MouseDown -- Mouse down MouseUp -- Mouse up MouseMove -- Mouse move How it Works ------------ To keep the size of the control to a minimum, to minimize internet download time, each card is created from the ground up. The only resources included in the control are the basic symbols needed to create the cards, one half of each face cards center, and the card backs. Where possible, monochrome and compressed bitmaps are used. The card control caches all card images after they have been created the first time. For games such as Solitaire in which the cards move across one another, and most of the cards in a deck are displayed on the screen at the same time, caching all the cards of course yields the best animations. To keep memory usage low, 4-bit DIB bitmaps are used to store the cached images. This control is a Windowless control, which uses transparency to create the missing card corner effect. When used with Internet Explorer, the control is Windowed, and the ambient background color is used to fill in the corners. When used in the HTML Layout Control, or another Windowless control host, the corners are transparent and the card or background beneath can be seen.