Ignore:
Timestamp:
Jan 18, 2001, 7:38:26 PM (25 years ago)
Author:
umoeller
Message:

Misc. changes.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/helpers/winh.c

    r25 r26  
    591591 *      supported.
    592592 *
    593  *      If mpEveryOther is 0, this sets all ticks
    594  *      on the primary slider scale.
     593 *      This function goes sets the ticks twice,
     594 *      once with mpEveryOther1 and ulPixels1,
     595 *      and then a second time with mpEveryOther2
     596 *      and ulPixels2. This allows you to quickly
     597 *      give, say, every tenth item a taller tick.
     598 *
     599 *      For every set, if mpEveryOther is 0, this sets
     600 *      all ticks on the primary slider scale.
    595601 *
    596602 *      If mpEveryOther is != 0, SHORT1FROMMP
     
    598604 *      SHORT2FROMMP specifies every other tick
    599605 *      to set from there. For example:
     606 *
    600607 +          MPFROM2SHORT(9, 10)
     608 *
    601609 *      would set tick 9, 19, 29, and so forth.
    602610 *
     611 *      If both mpEveryOther and ulPixels are -1,
     612 *      that set is skipped.
     613 *
     614 *      Example: Considering a slider with a
     615 *      primary scale from 0 to 30, using
     616 *
     617 +          winhSetSliderTicks(hwndSlider,
     618 +                             0,                       // every tick
     619 +                             3,                       //      to three pixels
     620 +                             MPFROM2SHORT(9, 10)      // then every tenth
     621 +                             6);                      //      to six pixels.
     622 *
    603623 *      Returns FALSE upon errors.
    604624 *
    605625 *@@added V0.9.1 (99-12-04) [umoeller]
    606  */
    607 
    608 BOOL winhSetSliderTicks(HWND hwndSlider,
    609                         MPARAM mpEveryOther,
    610                         ULONG ulPixels)
     626 *@@changed V0.9.7 (2001-01-18) [umoeller]: added second set
     627 */
     628
     629BOOL winhSetSliderTicks(HWND hwndSlider,            // in: linear slider
     630                        MPARAM mpEveryOther1,       // in: set 1
     631                        ULONG ulPixels1,
     632                        MPARAM mpEveryOther2,       // in: set 2
     633                        ULONG ulPixels2)
    611634{
    612635    BOOL brc = FALSE;
    613636
    614     if (mpEveryOther == 0)
    615     {
    616         // set all ticks:
    617         brc = (BOOL)WinSendMsg(hwndSlider,
    618                                SLM_SETTICKSIZE,
    619                                MPFROM2SHORT(SMA_SETALLTICKS,
    620                                             ulPixels),
    621                                NULL);
    622     }
    623     else
    624     {
    625         SLDCDATA  slcd;
    626         WNDPARAMS   wp;
    627         memset(&wp, 0, sizeof(WNDPARAMS));
    628         wp.fsStatus = WPM_CTLDATA;
    629         wp.cbCtlData = sizeof(slcd);
    630         wp.pCtlData = &slcd;
    631         // get primary scale data from the slider
    632         if (WinSendMsg(hwndSlider,
    633                        WM_QUERYWINDOWPARAMS,
    634                        (MPARAM)&wp,
    635                        0))
     637    ULONG ulSet;
     638    MPARAM mpEveryOther = mpEveryOther1;
     639    ULONG ulPixels = ulPixels1;
     640
     641    // do this twice
     642    for (ulSet = 0;
     643         ulSet < 2;
     644         ulSet++)
     645    {
     646        if (mpEveryOther == 0)
    636647        {
    637             USHORT usStart = SHORT1FROMMP(mpEveryOther),
    638                    usEveryOther = SHORT2FROMMP(mpEveryOther);
    639 
    640             USHORT usScale1Max = slcd.usScale1Increments,
    641                    us;
    642 
    643             brc = TRUE;
    644 
    645             for (us = usStart; us < usScale1Max; us += usEveryOther)
     648            // set all ticks:
     649            brc = (BOOL)WinSendMsg(hwndSlider,
     650                                   SLM_SETTICKSIZE,
     651                                   MPFROM2SHORT(SMA_SETALLTICKS,
     652                                                ulPixels),
     653                                   NULL);
     654        }
     655        else if ( (mpEveryOther != (MPARAM)-1) && (ulPixels != -1) )
     656        {
     657            SLDCDATA  slcd;
     658            WNDPARAMS   wp;
     659            memset(&wp, 0, sizeof(WNDPARAMS));
     660            wp.fsStatus = WPM_CTLDATA;
     661            wp.cbCtlData = sizeof(slcd);
     662            wp.pCtlData = &slcd;
     663            // get primary scale data from the slider
     664            if (WinSendMsg(hwndSlider,
     665                           WM_QUERYWINDOWPARAMS,
     666                           (MPARAM)&wp,
     667                           0))
    646668            {
    647                 if (!(BOOL)WinSendMsg(hwndSlider,
    648                                       SLM_SETTICKSIZE,
    649                                       MPFROM2SHORT(us,
    650                                                    ulPixels),
    651                                       NULL))
     669                USHORT usStart = SHORT1FROMMP(mpEveryOther),
     670                       usEveryOther = SHORT2FROMMP(mpEveryOther);
     671
     672                USHORT usScale1Max = slcd.usScale1Increments,
     673                       us;
     674
     675                brc = TRUE;
     676
     677                for (us = usStart; us < usScale1Max; us += usEveryOther)
    652678                {
    653                     brc = FALSE;
    654                     break;
     679                    if (!(BOOL)WinSendMsg(hwndSlider,
     680                                          SLM_SETTICKSIZE,
     681                                          MPFROM2SHORT(us,
     682                                                       ulPixels),
     683                                          NULL))
     684                    {
     685                        brc = FALSE;
     686                        break;
     687                    }
    655688                }
    656689            }
    657690        }
    658     }
     691
     692        // for the second loop, use second value set
     693        mpEveryOther = mpEveryOther2;
     694        ulPixels = ulPixels2;
     695                // we only loop twice
     696    } // end for (ulSet = 0; ulSet < 2;
    659697
    660698    return (brc);
Note: See TracChangeset for help on using the changeset viewer.