home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / cset21v6.zip / MMPM2TK / TK / H / SW.H < prev   
Text File  |  1993-01-25  |  32KB  |  566 lines

  1. /****************************************************************************/
  2. /*                                                                          */
  3. /* Module Name: SW.H                                                        */
  4. /*                                                                          */
  5. /* This is the multimedia include file that has the typedefs, defines and   */
  6. /* function prototyes for Multimedia Applets.                               */
  7. /*                                                                          */
  8. /* Copyright (c) International Business Machines Corporation 1990, 1991     */
  9. /*                        All Rights Reserved                               */
  10. /*                                                                          */
  11. /****************************************************************************/
  12. /* The folowing symbols are used in this file for conditional sections.     */
  13. /*                                                                          */
  14. /*   #define:                To include:                                    */
  15. /*                                                                          */
  16. /*   INCL_SECONDARYWINDOW     Secondary Window                              */
  17. /*   INCL_GRAPHICBUTTON      Graphic Buttons                                */
  18. /*   INCL_CIRCULARSLIDER     Circular Slider                                */
  19. /*                                                                          */
  20. /*                                                                          */
  21. /****************************************************************************/
  22.  
  23. #ifndef __SW_H
  24.    #define __SW_H
  25.  
  26.    #ifdef INCL_SECONDARYWINDOW
  27.  
  28.       #define MAX_SMBDTEXT               35
  29.  
  30.       #define MB_ICONCUSTOM             0x0001
  31.  
  32.       #define SC_DEFAULTSIZE            0xc000          /* WM_COMMAND from SysMenu */
  33.  
  34.       #define WM_INITSECONDARYWINDOW    0x0519          /* MP1: NULL, MP2: CreateParams */
  35.  
  36.       #define QS_FRAME                  0x1             /* Flag set to query frame  */
  37.       #define QS_DIALOG                 0x2             /* Flag set to query dialog */
  38.  
  39.       #pragma pack(4)
  40.  
  41.       typedef struct _SMBD
  42.       {
  43.          CHAR   achText[MAX_SMBDTEXT + 1]; /* Text of the button. eg. "~Cancel"    */
  44.          ULONG  idButton;                  /* Button ID returned when user chooses */
  45.          /*  button                              */
  46.          LONG   flStyle;                   /* Button style or'ed with internal     */
  47.          /*  styles                              */
  48.       } SMBD;
  49.  
  50.       typedef SMBD * PSMBD;
  51.  
  52.       typedef struct _SMBINFO
  53.       {
  54.          HPOINTER hIcon;               /* Icon handle                              */
  55.          ULONG    cButtons;            /* Number of buttons                        */
  56.          ULONG    flStyle;             /* Icon style flags (MB_ICONQUESTION, etc...)*/
  57.          HWND     hwndNotify;          /* Reserved                                 */
  58.          PSMBD    psmbd;               /* Array of button definitions              */
  59.       } SMBINFO;
  60.  
  61.       typedef SMBINFO * PSMBINFO;
  62.  
  63.       #pragma pack()
  64.  
  65.       /* Analogous to WinDlgBox */
  66.  
  67.       ULONG EXPENTRY  WinSecondaryWindow(HWND    hwndParent,
  68.       HWND    hwndOwner,
  69.       PFNWP   pfnDlgProc,
  70.       HMODULE hmod,
  71.       ULONG  idDlg,
  72.       PVOID   pCreateParams);
  73.  
  74.       /* Analogous to WinLoadDlg */
  75.       HWND EXPENTRY  WinLoadSecondaryWindow(HWND    hwndParent,
  76.       HWND    hwndOwner,
  77.       PFNWP   pfnDlgProc,
  78.       HMODULE hmod,
  79.       ULONG   idDlg,
  80.       PVOID   pCreateParams);
  81.  
  82.       /* Analogous to WinProcessDlg */
  83.       ULONG EXPENTRY  WinProcessSecondaryWindow(HWND hwndSW);
  84.  
  85.       /* Analogous to WinCreateDlg  */
  86.       HWND EXPENTRY  WinCreateSecondaryWindow(HWND    hwndParent,
  87.       HWND    hwndOwner,
  88.       PFNWP   pfnDlgProc,
  89.       PDLGTEMPLATE pdlgt,                       /* requires INCL_WINDIALOGS */
  90.       PVOID   pCreateParams);
  91.  
  92.       BOOL EXPENTRY WinDefaultSize(HWND hwnd);
  93.  
  94.       BOOL EXPENTRY WinInsertDefaultSize(HWND hwnd, PSZ pszDefaultSize);
  95.  
  96.       HWND EXPENTRY WinQuerySecondaryHWND(HWND hwnd, ULONG ulFlag);
  97.  
  98.       /************************************************************************/
  99.       /* WinSecondaryMessageBox                                               */
  100.       /*                                                                      */
  101.       /* Parameters: HWND   hwndParent   - handle of the parent window.       */
  102.       /*             HWND   hwndOwner    - handle of the owner window.        */
  103.       /*             PSZ    pszText      - message text.                      */
  104.       /*             PSZ    pszCaption   - title of the message box.          */
  105.       /*             ULONG  idWindow     - Message box id                     */
  106.       /*             PSMBINFO psmbinfo   - pointer to button/icon info        */
  107.       /************************************************************************/
  108.       ULONG  EXPENTRY  WinSecondaryMessageBox(HWND     hwndParent,
  109.       HWND     hwndOwner,
  110.       PSZ      pszText,
  111.       PSZ      pszCaption,
  112.       ULONG    idWindow,
  113.       PSMBINFO psmbinfo);
  114.  
  115.       /************************************************************************/
  116.       /* WinDismissSecondaryWindow                                            */
  117.       /*                                                                      */
  118.       /* This function should be called from within the dlg proc. The hwnd    */
  119.       /* passed in MUST be the handle to the actual dialog.                   */
  120.       /************************************************************************/
  121.  
  122.       BOOL EXPENTRY WinDismissSecondaryWindow(HWND hwndDlg, ULONG ulResult);
  123.  
  124.       /************************************************************************/
  125.       /* The parameter hwnd can be either the secondary window or the actual  */
  126.       /* dialog.                                                              */
  127.       /************************************************************************/
  128.  
  129.       BOOL EXPENTRY WinDestroySecondaryWindow(HWND hwnd);
  130.  
  131.       MRESULT EXPENTRY WinDefSecondaryWindowProc(HWND hwnd, ULONG msg, MPARAM mp1,
  132.       MPARAM mp2);
  133.  
  134.  
  135.    #endif /* ifdef INCL_SECONDARYWINDOW */
  136.  
  137.    #ifdef INCL_GRAPHICBUTTON
  138.  
  139.       /************************************************************************/
  140.       /*                         Graphic Buttons                              */
  141.       /************************************************************************/
  142.  
  143.       /************************************************************************/
  144.       /* Notes on Using GraphicButtons                                        */
  145.       /*                                                                      */
  146.       /* GraphicButton CONTROL DATA                                           */
  147.       /*                                                                      */
  148.       /*  The format of the control data for GraphicButtons is                */
  149.       /*         "button Text, number of bitmaps, bitmap resource id's ..."   */
  150.       /*                                                                      */
  151.       /*                                                                      */
  152.       /*  Following are two example window templates of GraphicButtons:       */
  153.       /*                                                                      */
  154.       /*      1)  CONTROL  "", IDD_MP_REV, 120, 10, TS_PB_WIDTH, TS_PB_HEIGHT,*/
  155.       /*                 WC_GRAPHICBUTTON,                                    */
  156.       /*                 GBS_TWOSTATE | GBS_HILITEBITMAP |                    */
  157.       /*                 WS_VISIBLE | WS_TABSTOP                              */
  158.       /*                 CTLDATA GB_RESOURCE,"~REV", 2, ID_MP_REV1, ID_MP_REV0*/
  159.       /*                                                                      */
  160.       /*  The above graphicbutton has id IDD_MP_REV and is of type            */
  161.       /*  GBS_TWOSTATE and GBS_HILITEBITMAP.  The GBS_HILITEBITMAP allows     */
  162.       /*  a different bitmap to be displayed when the button is in the        */
  163.       /*  hilite state. The graphicbutton will be displayed with text         */
  164.       /*  "REV" and has "R" as the mnemonic.  It has 2 bitmaps associated     */
  165.       /*  with it.  Their resource id are ID_MP_REV1 and ID_MP_REV0.          */
  166.       /*                                                                      */
  167.       /*                                                                      */
  168.       /*      2)   CONTROL  "", IDD_MP_PLAY, 175, 10, TS_PB_WIDTH,            */
  169.       /*                        TS_PB_HEIGHT, WC_GRAPHICBUTTON,               */
  170.       /*                        GBS_AUTOTWOSTATE | GBS_AUTOANIMATION |        */
  171.       /*                        WS_VISIBLE | WS_TABSTOP                       */
  172.       /*                        CTLDATA GB_RESOURCE, "~PLAY", 9,              */
  173.       /*                                ID_MP_STOP0, ID_MP_PLAY1, ID_MP_PLAY2,*/
  174.       /*                                ID_MP_PLAY3, ID_MP_PLAY4, ID_MP_PLAY5,*/
  175.       /*                                ID_MP_PLAY6, ID_MP_PLAY7, ID_MP_REV1  */
  176.       /*                                                                      */
  177.       /*  The above graphicbutton has id IDD_MP_PLAY and is of type           */
  178.       /*  GBS_AUTOTWOSTATE and GBS_AUTOANIMATE.  When clicked upon,           */
  179.       /*  the button will automatically toggle the state and animation.       */
  180.       /*  The graphicbutton will be displayed with text "PLAY"                */
  181.       /*  and mnemonic "P".  It has 9 bitmaps associated with it.             */
  182.       /*                                                                      */
  183.       /*                                                                      */
  184.       /*                                                                      */
  185.       /*  GraphicButton Painting                                              */
  186.       /*                                                                      */
  187.       /*  Due to the PM design, whenever a graphicbutton is clicked,          */
  188.       /*  it is sent a BN_PAINT (to paint a non-hilite state) and then        */
  189.       /*  BN_CLICKED.  Thus, for GBS_AUTO* style graphicbuttons, a paint      */
  190.       /*  request is generated before the button has a chance to change       */
  191.       /*  its state (BN_CLICKED).  To avoid this premature painting,          */
  192.       /*  code was inserted to delay the painting of graphicbuttons           */
  193.       /*  GB_PAINT_RESOLUTION milliseconds whenever the button is switching   */
  194.       /*  FROM the hilite paint state.                                        */
  195.       /*                                                                      */
  196.       /************************************************************************/
  197.  
  198.       BOOL EXPENTRY WinRegisterGraphicButton(VOID);
  199.  
  200.       #define WC_GRAPHICBUTTON ((PSZ)0xffff0040L)
  201.  
  202.       /************************************************************************/
  203.       /*             GraphicButton Animation/TwoState constants               */
  204.       /************************************************************************/
  205.  
  206.       /************************************************************************/
  207.       /*                     Graphic Button Style bits                        */
  208.       /************************************************************************/
  209.  
  210.       #define GBS_TWOSTATE        0x1000  /* indicates TwoState button        */
  211.       #define GBS_AUTOTWOSTATE    0X2000  /* will auto toggle state up/down   */
  212.       #define GBS_ANIMATION       0x4000  /* indicates Animatable button      */
  213.       #define GBS_AUTOANIMATION   0x8000  /* will auto toggle anim. on/off    */
  214.       #define GBS_DISABLEBITMAP   0x0010  /* allows a diff. bitmap when       */
  215.       /* disabled                         */
  216.       #define GBS_HILITEBITMAP    0x0020  /* allows a diff. bitmap when       */
  217.       /* hilited                          */
  218.       #define GBS_3D_TEXTRECESSED 0x0040  /* display text in 3-D recessed     */
  219.       #define GBS_3D_TEXTRAISED   0x0080  /* display text in 3-D raised       */
  220.  
  221.       /************************************************************************/
  222.       /*                     Graphic Button User Constants                    */
  223.       /************************************************************************/
  224.  
  225.       /************************************************************************/
  226.       /* Codes to reference allowed GraphicButton states (or paint states)    */
  227.       /************************************************************************/
  228.  
  229.       #define GB_ERROR           -1       /* GraphicButton Error              */
  230.       #define GB_UP               1       /* GraphicButton up (and paint)     */
  231.       /* state                            */
  232.       #define GB_DOWN             2       /* GraphicButton down (and paint)   */
  233.       /* state                            */
  234.       #define GB_DISABLE          3       /* GraphicButton disabled state     */
  235.       #define GB_HILITE           4       /* GraphicButton paint state only   */
  236.       #define GB_OUTOFHILITE      5       /* Changing out of hilite paint     */
  237.       /* state                            */
  238.  
  239.       /************************************************************************/
  240.       /* Codes for various GraphicButton message function parameters          */
  241.       /************************************************************************/
  242.  
  243.       #define GB_TOGGLE           10      /* GraphicButton toggle             */
  244.       #define GB_CURRENTSTATE     11      /* GraphicButton's current state    */
  245.       #define GB_ANIMATIONBEGIN   12      /* when refering to index of anim   */
  246.       /* start                            */
  247.       #define GB_ANIMATIONEND     13      /* when refering to index of anim   */
  248.       /* end                              */
  249.       #define GB_MAXINDEX         14      /* GraphicButton max. index         */
  250.  
  251.       /************************************************************************/
  252.       /* Codes to set/query text position relative to the bitmap              */
  253.       /************************************************************************/
  254.  
  255.       #define GB_TEXTBELOW        1       /* place text below bitmap          */
  256.       #define GB_TEXTABOVE        2       /* place text above bitmap          */
  257.  
  258.       /************************************************************************/
  259.       /* Codes used to set the animation frame with message GBM_SETBITMAPINDEX*/
  260.       /************************************************************************/
  261.  
  262.       #define GB_INDEX_FORWARD   -1       /* advance one frame foward         */
  263.       #define GB_INDEX_BACKWARD  -2       /* advance one frame backwards      */
  264.       #define GB_INDEX_FIRST     -3       /* set to first frame of sequence   */
  265.       #define GB_INDEX_LAST      -4       /* set to last frame of sequence    */
  266.  
  267.       #pragma pack(1)
  268.  
  269.       typedef struct _GBTNCDATA
  270.       {
  271.          USHORT  usReserved;
  272.          PSZ     pszText;
  273.          HMODULE hmod;
  274.          USHORT  cBitmaps;
  275.          USHORT  aidBitmap[1];
  276.       } GBTNCDATA;
  277.  
  278.       typedef GBTNCDATA *PGBTNCDATA;
  279.  
  280.       #pragma pack()
  281.  
  282.       #define GB_RESOURCE  1
  283.       #define GB_STRUCTURE 0
  284.  
  285.  
  286.       /************************************************************************/
  287.       /*          Notification Messages received by GraphicButton Parent      */
  288.       /***********************************************************************/
  289.       /************************************************************************/
  290.       /* GBN_BUTTONDOWN, GBN_BUTTONUP, and GBN_BUTTONHILITE                   */
  291.       /*                                                                      */
  292.       /* The notification messages are passed as part of the WM_CONTROL       */
  293.       /* message.                                                             */
  294.       /*                                                                      */
  295.       /* msg = WM_CONTROL                                                     */
  296.       /* mp1 = MPFROM2SHORT(gpb_id, button_state)                             */
  297.       /*         gpd_id       = identity of the displayed graphic pushbutton  */
  298.       /*         button_state = GBN_BUTTONUP, GBN_BUTTONDOWN, or              */
  299.       /*                        GBN_BUTTONHILITE                              */
  300.       /*                                                                      */
  301.       /************************************************************************/
  302.  
  303.       #define GBN_BUTTONUP     0x0524
  304.       #define GBN_BUTTONDOWN   0x0525
  305.       #define GBN_BUTTONHILITE 0x0526
  306.  
  307.       /************************************************************************/
  308.       /*          Messages to GraphicButton Windows                           */
  309.       /************************************************************************/
  310.  
  311.       /************************************************************************/
  312.       /*                             GBM_SETGRAPHICDATA                       */
  313.       /************************************************************************/
  314.       /* mp1 = MPFROMP((PGBTNCDATA)&gbtncdata);    Graphic button control data*/
  315.       /* mp2 = NULL;                               not used                   */
  316.       /*                                                                      */
  317.       /* WARNING: This message resets all button parameters.                  */
  318.       /*                                                                      */
  319.       /************************************************************************/
  320.  
  321.       #define GBM_SETGRAPHICDATA   0x052A
  322.  
  323.  
  324.       /************************************************************************/
  325.       /*                             GBM_ANIMATE                              */
  326.       /************************************************************************/
  327.       /* mp1 = MPFROMSHORT(fStart)      TRUE to start animation, FALSE to stop*/
  328.       /* mp2 = MPFROMSHORT(fContinue)   TRUE continue anim. at currently      */
  329.       /*                                displayed bitmap, FALSE restart at    */
  330.       /*                                the beginning.                        */
  331.       /*                                                                      */
  332.       /* Returns TRUE on Success                                              */
  333.       /*         FALSE on Failure                                             */
  334.       /*                                                                      */
  335.       /************************************************************************/
  336.  
  337.       #define GBM_ANIMATE 0x052B
  338.  
  339.  
  340.       /************************************************************************/
  341.       /*                             GBM_SETANIMATIONRATE                     */
  342.       /************************************************************************/
  343.       /* mp1 = MPFROMSHORT(ULmIL);      Animation rate in milliseconds        */
  344.       /* mp2 = NULL                     not used                              */
  345.       /*                                                                      */
  346.       /*                                                                      */
  347.       /* Returns TRUE on Success                                              */
  348.       /*         FALSE on Failure                                             */
  349.       /*                                                                      */
  350.       /************************************************************************/
  351.  
  352.       #define GBM_SETANIMATIONRATE 0x052C
  353.  
  354.  
  355.       /************************************************************************/
  356.       /*                             GBM_QUERYANIMATIONACTIVE                 */
  357.       /************************************************************************/
  358.       /* mp1 = NULL;                    not used                              */
  359.       /* mp2 = NULL;                    not used                              */
  360.       /*                                                                      */
  361.       /*                                                                      */
  362.       /* Returns TRUE if animation is active, else GB_ERROR                   */
  363.       /*                                                                      */
  364.       /*                                                                      */
  365.       /************************************************************************/
  366.  
  367.       #define GBM_QUERYANIMATIONACTIVE 0x052D
  368.  
  369.  
  370.       /************************************************************************/
  371.       /*                             GBM_QUERYANIMATIONRATE                   */
  372.       /************************************************************************/
  373.       /* mp1 = NULL;                    not used                              */
  374.       /* mp2 = NULL;                    not used                              */
  375.       /*                                                                      */
  376.       /*                                                                      */
  377.       /* Returns ULONG sepcifying animation rate in milliseconds              */
  378.       /*                                                                      */
  379.       /*                                                                      */
  380.       /************************************************************************/
  381.  
  382.       #define GBM_QUERYANIMATIONRATE 0x052E
  383.  
  384.  
  385.       /************************************************************************/
  386.       /*                             GBM_SETBITMAPINDEX                       */
  387.       /************************************************************************/
  388.       /* mp1 = MPFROMSHORT(usGB_State)       Bitmap index to change           */
  389.       /*             GB_UP,                                                   */
  390.       /*             GB_DOWN,                                                 */
  391.       /*             GB_DISABLE,                                              */
  392.       /*             GB_HILITE,                                               */
  393.       /*             GB_ANIMATIONBEGIN,                                       */
  394.       /*             GB_ANIMATIONEND,                                         */
  395.       /*          or GB_CURRENTSTATE    chng current state (up or down) bitmap*/
  396.       /* mp2 = MPFROMSHORT(sFrameCode)  Set according to code or frame desire */
  397.       /*             GB_INDEX_FORWARD,  chng to next bitmap in circular array */
  398.       /*             GB_INDEX_BACKWARD, "   "  prev   "    "     "       "    */
  399.       /*             GB_INDEX_FIRST,    "   "  first  "    "     "       "    */
  400.       /*             GB_INDEX_LAST,     "   "  last   "    "     "       "    */
  401.       /*          or desired_bitmap     otherwise desired bmp index specified */
  402.       /*                                                                      */
  403.       /* Returns TRUE on Success, otherwise FALSE                             */
  404.       /*                                                                      */
  405.       /************************************************************************/
  406.  
  407.       #define GBM_SETBITMAPINDEX 0x052F
  408.  
  409.  
  410.       /************************************************************************/
  411.       /*                             GBM_QUERYBITMAPINDEX                     */
  412.       /************************************************************************/
  413.       /*  mp1 = MPFROMSHORT(usGB_State)       Query bitmap index              */
  414.       /*            GB_UP,                                                    */
  415.       /*            GB_DOWN,                                                  */
  416.       /*            GB_DISABLE,                                               */
  417.       /*            GB_HILITE,                                                */
  418.       /*            GB_ANIMATIONBEGIN,                                        */
  419.       /*            GB_ANIMATIONEND,                                          */
  420.       /*         or GB_CURRENTSTATE  query current state (up or down) bitmap  */
  421.       /*  mp2 = NULL;                    not used                             */
  422.       /*                                                                      */
  423.       /*  Returns USHORT specifying the index                                 */
  424.       /*                                                                      */
  425.       /*                                                                      */
  426.       /************************************************************************/
  427.  
  428.       #define GBM_QUERYBITMAPINDEX 0x0530
  429.  
  430.       /************************************************************************/
  431.       /*                             GBM_SETSTATE                             */
  432.       /************************************************************************/
  433.       /* mp1 = MPFROMSHORT(usStateCode)   Set twostate button to specified    */
  434.       /*                                  state                               */
  435.       /*             GB_UP,                                                   */
  436.       /*             GB_DOWN,                                                 */
  437.       /*          or GB_TOGGLE          toggle (up/down) to (down/up)         */
  438.       /* mp2 = MPFROMBOOL(fRepaint)     TRUE  - state changed and displayed   */
  439.       /*                                FALSE - state changed, not displayed  */
  440.       /*                                                                      */
  441.       /* Returns TRUE on Success                                              */
  442.       /*         FALSE on Failure                                             */
  443.       /*                                                                      */
  444.       /*                                                                      */
  445.       /************************************************************************/
  446.  
  447.       #define GBM_SETSTATE 0x0531
  448.  
  449.       /************************************************************************/
  450.       /*                             GBM_QUERYSTATE                           */
  451.       /************************************************************************/
  452.       /*                                                                      */
  453.       /* mp1 = NULL                        not used                           */
  454.       /* mp2 = NULL                        not used                           */
  455.       /*                                                                      */
  456.       /* Returns the state (GB_UP or GB_DOWN) else GB_ERROR.                  */
  457.       /*                                                                      */
  458.       /*                                                                      */
  459.       /************************************************************************/
  460.  
  461.       #define GBM_QUERYSTATE 0x0532
  462.  
  463.       /************************************************************************/
  464.       /*                             GBM_SETTEXTPOSITION                      */
  465.       /************************************************************************/
  466.       /* mp1 = MPFROMSHORT(usTextPos)   How to position text relative to      */
  467.       /*                                  bitmap                              */
  468.       /*               GB_TEXTBELOW,                                          */
  469.       /*            or GB_TEXTABOVE                                           */
  470.       /*   mp2 = NULL                     not used                            */
  471.       /*                                                                      */
  472.       /*   Returns TRUE on Success, otherwise FALSE                           */
  473.       /*                                                                      */
  474.       /************************************************************************/
  475.  
  476.       #define GBM_SETTEXTPOSITION 0x0533
  477.  
  478.       /************************************************************************/
  479.       /*                             GBM_QUERYTEXTPOSITION                    */
  480.       /************************************************************************/
  481.       /*                                                                      */
  482.       /*  mp1 = NULL                          not used                        */
  483.       /*  mp2 = NULL                          not used                        */
  484.       /*                                                                      */
  485.       /*  Returns GB_TEXTBELOW, GB_TEXTABOVE, GB_TEXTRIGHT, GB_TEXTLEFT       */
  486.       /*  on success, otherwise FALSE                                         */
  487.       /*                                                                      */
  488.       /************************************************************************/
  489.  
  490.       #define GBM_QUERYTEXTPOSITION 0x0534
  491.  
  492.  
  493.       /************************************************************************/
  494.       /*                             GraphicButton END                        */
  495.       /************************************************************************/
  496.  
  497.    #endif /* ifdef INCL_GRAPHICBUTTON  */
  498.  
  499.    /**********************************************************************/
  500.    /*                   DIAL CONTROL - CIRCULAR SLIDER                   */
  501.    /**********************************************************************/
  502.  
  503.    #ifdef INCL_STPMPAGE
  504.       #define MM_TABHELP  0x054C
  505.    #endif /* INCL_STPMPAGE */
  506.  
  507.    #ifdef INCL_DIAL
  508.       #define INCL_CIRCULARSLIDER
  509.    #endif /* INCL_DIAL */
  510.  
  511.    #ifdef INCL_CIRCULARSLIDER
  512.  
  513.       BOOL EXPENTRY WinRegisterCircularSlider(VOID);
  514.  
  515.       #define WC_CIRCULARSLIDER   ((PSZ)0xffff0041L)
  516.  
  517.       typedef struct _CSBITMAPDATA
  518.       {
  519.          HBITMAP hbmLeftUp;
  520.          HBITMAP hbmLeftDown;
  521.          HBITMAP hbmRightUp;
  522.          HBITMAP hbmRightDown;
  523.       } CSBITMAPDATA;
  524.       typedef CSBITMAPDATA *PCSBITMAPDATA;
  525.  
  526.       /* Messages */
  527.  
  528.       #define CSM_QUERYRANGE      0x053D         /* mp1: PSHORT pLow  mp2: PSHORT pHigh */
  529.       #define CSM_SETRANGE        0x053E         /* mp1: SHORT  Low   mp2: SHORT  High  */
  530.       #define CSM_QUERYVALUE      0x053F         /* mp1: PSHORT pValue  mp2: NULL */
  531.       #define CSM_SETVALUE        0x0540         /* mp1: SHORT  Value   mp2: NULL */
  532.       #define CSM_QUERYRADIUS     0x0541         /* mp1: PUSHORT uRadius */
  533.       #define CSM_SETINCREMENT    0x0542         /* mp1: USHORT  ButtonIncr  mp2: USHORT TickIncr */
  534.       #define CSM_QUERYINCREMENT  0x0543         /* mp1: PUSHORT pButtonIncr mp2: PUSHORT pTickIncr */
  535.       #define CSM_SETBITMAPDATA   0x0544         /* mp1: PDIALBITMAPDATA */
  536.  
  537.       #define CSN_SETFOCUS        0x0548             /* mp2: BOOL fSetFocus */
  538.       #define CSN_CHANGED         0x0549             /* mp2: SHORT Value */
  539.       #define CSN_TRACKING        0x054A             /* mp2: SHORT Value */
  540.       #define CSN_QUERYBACKGROUNDCOLOR 0x054B        /* mp2: NULL   return: CLR_ */
  541.  
  542.  
  543.       #define WS_NOBUTTON        0x1                  /* Style bits */
  544.       #define WS_NOTEXT          0x2
  545.       #define WS_NONUMBER        0x4
  546.       #define WS_POINTSELECT     0x8
  547.       #define WS_360            0x10
  548.       #define WS_MIDPOINT       0x20
  549.  
  550.       #define CSS_NOBUTTON       WS_NOBUTTON          /* Style bits */
  551.       #define CSS_NOTEXT         WS_NOTEXT
  552.       #define CSS_NONUMBER       WS_NONUMBER
  553.       #define CSS_POINTSELECT    WS_POINTSELECT
  554.       #define CSS_360            WS_360
  555.       #define CSS_MIDPOINT       WS_MIDPOINT
  556.  
  557.       #define CSS_PROPORTIONALTICKS  0x40
  558.  
  559.  
  560.    #endif      /* INCL_CIRCULARSLIDER */
  561.  
  562. #endif /* ifndef __SW_H  */
  563.  
  564.  
  565.  
  566.