Jumpy Text Class

Environment: VC6 SP2, NT4 SP5, CE 2.11

Sample Image This class is derived from CStatic and presents a special effect that will kick your ass. It is very simple to use and I hope you'll enjoy it very much. Here is how you use this class:

    1. Download the source code.
    2. Insert the .h and .cpp files into your project.
    3. Add a static control into your dialog resource.
    4. Add a member variable for that static control.
    5. Modify the varible declaration.
Change this:

    CStatic m_ctrlYourStaticControl; 
To this:

    CJumpyDraw m_ctrlYourStaticControl; 
    6. In your InitDialog message handler set the JumpyText parameters. Use these member functions:

    7. When you want to start the animation call StartJumpyText.


Download demo project (including Release build) - 137 Kb
Download source - 4.77 Kb


  • Urgent help

    Posted by Legacy on 05/03/2001 12:00am

    Originally posted by: Hoa AN

    Dear sir,

    Can you help me to overcome the following problem:
    I want to have a static text control in VC++ 6.0 that has background transparent just like a label control in VB that has BackStyle set to TRANSPARENT. Because I want to use this static text to display text over an image background on a dialog box.
    Thanks for you help.


  • use float values in gradient generation

    Posted by Legacy on 01/29/2001 12:00am

    Originally posted by: Achim Hentschel

    Great modification of CStatic! Exactly what I was looking for - a gradient static control.
    But while using I recognized that gradient generation was not that precise. I changed the int values to float and used a casting in RGB() function.

    void CJumpyDraw::DrawLinearWash(CDC* pDC, CRect* prc, COLORREF crStart, COLORREF crEnd)
    // Get the starting RGB values and calculate the incremental
    // changes to be applied.

    COLORREF cr;
    float iR = GetRValue(crStart);
    float iG = GetGValue(crStart);
    float iB = GetGValue(crStart);
    float idR = (GetRValue(crEnd) - iR) / (m_iGradientSteps - 1);
    float idG = (GetGValue(crEnd) - iG) / (m_iGradientSteps - 1);
    float idB = (GetBValue(crEnd) - iB) / (m_iGradientSteps - 1);
    int icx = prc->Width() / m_iGradientSteps, iLeft = prc->left, iRight;

    for (int i = 0; i < m_iGradientSteps; i++, iR += idR, iG += idG, iB += idB)
    // Use special code for the last segment to avoid any problems
    // with integer division.

    if (i == (m_iGradientSteps - 1))
    iRight = prc->right;
    iRight = iLeft + icx;

    cr = RGB((int) iR, (int) iG, (int) iB);

    // The following extra stack frame allocates and disposes
    // of the GDI objects nicely.

    // Perform the drawing and restore the DC; the objects
    // will be freed automatically.

    CBrush br(cr);
    CBrush* pbrOld = pDC->SelectObject(&br);
    pDC->Rectangle(iLeft, prc->top, iRight + 1, prc->bottom);
    // Reset the left side of the drawing rectangle.

    iLeft = iRight;

    I also added a member variable for the gradient steps (m_iGradientSteps) replacing the const int.

    Achim Hentschel

  • Greate Work.But I need a help

    Posted by Legacy on 01/10/2001 12:00am

    Originally posted by: Arun Jose

    But how could u make a static control to capture BN_CLICKED message.ie. if I click on a static box it should fire an event.Have u got any idea .If do pls mail me thank u.

  • Good job Fabian Toader. Thank you.

    Posted by Legacy on 02/23/2000 12:00am

    Originally posted by: De Tran

  • Very cool

    Posted by Legacy on 01/19/2000 12:00am

    Originally posted by: Jason Hattingh

    Thanks for that - I like it. Very well presented demo project, too.


  • Great job...but could be greater....

    Posted by Legacy on 12/03/1999 12:00am

    Originally posted by: Dani alias Zizi

    HA HA

Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • Anthony Christie, the Chief Marketing Officer for Level Communications, is responsible for customer experience, worldwide marketing and product management. In this informative asset, he shares his insights into why a private network connection to cloud-bases applications is the right decision for your enterprise. Download now to find out more.

  • Moving from an on-premises environment to Office 365 does not remove the need to plan for disruptions or reduce the business risk requirements for protecting email services. If anything, some risks increase with a move to the cloud. Read how to ease the transition every business faces if considering or already migrating to cloud email. This white paper discusses: Setting expectations when migrating to Office 365 Understanding the implications of relying solely on Exchange Online security Necessary archiving …

Most Popular Programming Stories

More for Developers

RSS Feeds

Thanks for your registration, follow us on our social networks to keep up-to-date