home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / vc98 / include / bttncur.h < prev    next >
C/C++ Source or Header  |  1998-04-24  |  8KB  |  202 lines

  1. /*
  2.  * BTTNCUR.H
  3.  * Buttons & Cursors Version 1.1, March 1993
  4.  *
  5.  * Public include file for the Button Images and Cursor DLL, including
  6.  * structures, definitions, and function prototypes.
  7.  *
  8.  * Copyright (c)1992-1996 Microsoft Corporation, All Rights Reserved,
  9.  * as applied to redistribution of this source code in source form
  10.  * License is granted to use of compiled code in shipped binaries.
  11.  */
  12.  
  13.  
  14. #ifndef _BTTNCUR_H_
  15. #define _BTTNCUR_H_
  16.  
  17. #ifdef __cplusplus
  18. extern "C"
  19.     {
  20. #endif
  21.  
  22.  
  23. //Standard image bitmap
  24.  
  25. //WARNING:  Obsolete.  Use the return from UIToolDisplayData
  26. #define IDB_STANDARDIMAGES              400
  27.  
  28. //New values for display types
  29. #define IDB_STANDARDIMAGESMIN           400
  30. #define IDB_STANDARDIMAGES96            400
  31. #define IDB_STANDARDIMAGES72            401
  32. #define IDB_STANDARDIMAGES120           402
  33.  
  34.  
  35.  
  36. //Image indices inside the standard bitmap.
  37. #define TOOLIMAGE_MIN                   0
  38. #define TOOLIMAGE_EDITCUT               0
  39. #define TOOLIMAGE_EDITCOPY              1
  40. #define TOOLIMAGE_EDITPASTE             2
  41. #define TOOLIMAGE_FILENEW               3
  42. #define TOOLIMAGE_FILEOPEN              4
  43. #define TOOLIMAGE_FILESAVE              5
  44. #define TOOLIMAGE_FILEPRINT             6
  45. #define TOOLIMAGE_HELP                  7
  46. #define TOOLIMAGE_HELPCONTEXT           8
  47. #define TOOLIMAGE_MAX                   8
  48.  
  49.  
  50. //Additional Standard Cursors as defined in the UI Design Guide.
  51. #define IDC_NEWUICURSORMIN              500
  52. #define IDC_RIGHTARROW                  500
  53. #define IDC_CONTEXTHELP                 501
  54. #define IDC_MAGNIFY                     502
  55. #define IDC_NODROP                      503
  56. #define IDC_TABLETOP                    504
  57. #define IDC_HSIZEBAR                    505
  58. #define IDC_VSIZEBAR                    506
  59. #define IDC_HSPLITBAR                   507
  60. #define IDC_VSPLITBAR                   508
  61. #define IDC_SMALLARROWS                 509
  62. #define IDC_LARGEARROWS                 510
  63. #define IDC_HARROWS                     511
  64. #define IDC_VARROWS                     512
  65. #define IDC_NESWARROWS                  513
  66. #define IDC_NWSEARROWS                  514
  67. #define IDC_NEWUICURSORMAX              514
  68.  
  69.  
  70.  
  71. //Standard sizes for toolbar buttons and bitmaps on display types
  72.  
  73. //WARNING:  These are obsolete for version 1.0 compatibility/
  74. #define TOOLBUTTON_STDWIDTH             24
  75. #define TOOLBUTTON_STDHEIGHT            22
  76. #define TOOLBUTTON_STDIMAGEWIDTH        16
  77. #define TOOLBUTTON_STDIMAGEHEIGHT       15
  78.  
  79. /*
  80.  * Applications can call UIToolDisplayData to get the particular
  81.  * values to use for the current display instead of using these values
  82.  * directly.  However, if the application has the aspect ratio already
  83.  * then these are available for them.
  84.  */
  85.  
  86. //Sizes for 72 DPI (EGA)
  87. #define TOOLBUTTON_STD72WIDTH           24
  88. #define TOOLBUTTON_STD72HEIGHT          16
  89. #define TOOLBUTTON_STD72IMAGEWIDTH      16
  90. #define TOOLBUTTON_STD72IMAGEHEIGHT     11
  91.  
  92. //Sizes for 96 DPI (VGA)
  93. #define TOOLBUTTON_STD96WIDTH           24
  94. #define TOOLBUTTON_STD96HEIGHT          22
  95. #define TOOLBUTTON_STD96IMAGEWIDTH      16
  96. #define TOOLBUTTON_STD96IMAGEHEIGHT     15
  97.  
  98. //Sizes for 120 DPI (8514/a)
  99. #define TOOLBUTTON_STD120WIDTH          32
  100. #define TOOLBUTTON_STD120HEIGHT         31
  101. #define TOOLBUTTON_STD120IMAGEWIDTH     24
  102. #define TOOLBUTTON_STD120IMAGEHEIGHT    23
  103.  
  104.  
  105. //Sizes of a standard button bar depending on the display
  106. #define CYBUTTONBAR72                   23
  107. #define CYBUTTONBAR96                   29
  108. #define CYBUTTONBAR120                  38
  109.  
  110.  
  111.  
  112. /*
  113.  * The low-word of the state contains the display state where each
  114.  * value is mutually exclusive and contains one or more grouping bits.
  115.  * Each group represents buttons that share some sub-state in common.
  116.  *
  117.  * The high-order byte controls which colors in the source bitmap,
  118.  * black, white, gray, and dark gray, are to be converted into the
  119.  * system colors COLOR_BTNTEXT, COLOR_HILIGHT, COLOR_BTNFACE, and
  120.  * COLOR_BTNSHADOW.  Any or all of these bits may be set to allow
  121.  * the application control over specific colors.
  122.  *
  123.  * The actual state values are split into a command group and an
  124.  * attribute group.  Up, mouse down, and disabled states are identical,
  125.  * but only attributes can have down, down disabled, and indeterminate
  126.  * states.
  127.  *
  128.  * BUTTONGROUP_BLANK is defined so an application can draw only the button
  129.  * without an image in the up, down, mouse down, or indeterminate
  130.  * state, that is, BUTTONGROUP_BLANK is inclusive with BUTTONGROUP_DOWN
  131.  * and BUTTONGROUP_LIGHTFACE.
  132.  */
  133.  
  134.  
  135. #define BUTTONGROUP_DOWN                0x0001
  136. #define BUTTONGROUP_ACTIVE              0x0002
  137. #define BUTTONGROUP_DISABLED            0x0004
  138. #define BUTTONGROUP_LIGHTFACE           0x0008
  139. #define BUTTONGROUP_BLANK               0x0010
  140.  
  141. //Command buttons only
  142. #define COMMANDBUTTON_UP                (BUTTONGROUP_ACTIVE)
  143. #define COMMANDBUTTON_MOUSEDOWN         (BUTTONGROUP_ACTIVE | BUTTONGROUP_DOWN)
  144. #define COMMANDBUTTON_DISABLED          (BUTTONGROUP_DISABLED)
  145.  
  146. //Attribute buttons only
  147. #define ATTRIBUTEBUTTON_UP              (BUTTONGROUP_ACTIVE)
  148. #define ATTRIBUTEBUTTON_MOUSEDOWN       (BUTTONGROUP_ACTIVE | BUTTONGROUP_DOWN)
  149. #define ATTRIBUTEBUTTON_DISABLED        (BUTTONGROUP_DISABLED)
  150. #define ATTRIBUTEBUTTON_DOWN            (BUTTONGROUP_ACTIVE | BUTTONGROUP_DOWN | BUTTONGROUP_LIGHTFACE)
  151. #define ATTRIBUTEBUTTON_INDETERMINATE   (BUTTONGROUP_ACTIVE | BUTTONGROUP_LIGHTFACE)
  152. #define ATTRIBUTEBUTTON_DOWNDISABLED    (BUTTONGROUP_DISABLED | BUTTONGROUP_DOWN | BUTTONGROUP_LIGHTFACE)
  153.  
  154. //Blank buttons only
  155. #define BLANKBUTTON_UP                  (BUTTONGROUP_ACTIVE | BUTTONGROUP_BLANK)
  156. #define BLANKBUTTON_DOWN                (BUTTONGROUP_ACTIVE | BUTTONGROUP_BLANK | BUTTONGROUP_DOWN | BUTTONGROUP_LIGHTFACE)
  157. #define BLANKBUTTON_MOUSEDOWN           (BUTTONGROUP_ACTIVE | BUTTONGROUP_BLANK | BUTTONGROUP_DOWN)
  158. #define BLANKBUTTON_INDETERMINATE       (BUTTONGROUP_ACTIVE | BUTTONGROUP_BLANK | BUTTONGROUP_LIGHTFACE)
  159.  
  160.  
  161. /*
  162.  * Specific bits to prevent conversions of specific colors to system
  163.  * colors.  If an application uses this newer library and never specified
  164.  * any bits, then they benefit from color conversion automatically.
  165.  */
  166. #define PRESERVE_BLACK                  0x0100
  167. #define PRESERVE_DKGRAY                 0x0200
  168. #define PRESERVE_LTGRAY                 0x0400
  169. #define PRESERVE_WHITE                  0x0800
  170.  
  171. #define PRESERVE_ALL                    (PRESERVE_BLACK | PRESERVE_DKGRAY | PRESERVE_LTGRAY | PRESERVE_WHITE)
  172. #define PRESERVE_NONE                   0   //Backwards compatible
  173.  
  174.  
  175.  
  176. //Structure for UIToolConfigureForDisplay
  177. typedef struct tagTOOLDISPLAYDATA
  178.     {
  179.     UINT        uDPI;       //Display driver DPI
  180.     UINT        cyBar;      //Vertical size for a bar containing buttons.
  181.     UINT        cxButton;   //Dimensions of a button.
  182.     UINT        cyButton;
  183.     UINT        cxImage;    //Dimensions of bitmap image
  184.     UINT        cyImage;
  185.     UINT        uIDImages;  //Standard resource ID for display-sensitive images
  186.     } TOOLDISPLAYDATA, FAR *LPTOOLDISPLAYDATA;
  187.  
  188.  
  189.  
  190. //Public functions in BTTNCUR.DLL
  191. HCURSOR WINAPI UICursorLoad(UINT);
  192. BOOL    WINAPI UIToolConfigureForDisplay(LPTOOLDISPLAYDATA);
  193. BOOL    WINAPI UIToolButtonDraw(HDC, int, int, int, int, HBITMAP, int, int, int, UINT);
  194. BOOL    WINAPI UIToolButtonDrawTDD(HDC, int, int, int, int, HBITMAP, int, int, int, UINT, LPTOOLDISPLAYDATA);
  195.  
  196.  
  197. #ifdef __cplusplus
  198.     }
  199. #endif
  200.  
  201. #endif //_BTTNCUR_H_
  202.