A Switcher Control (like the Windows Task Bar)

Environment: VC6 SP2, WinNT 4.0 SP3, Win98 GOLD

Ever since Windows 95 first came out, I have noticed that just about every developer was scambling to get all the new common controls and UI features into their applications... but it seems like nobody has yet to make a taskbar-like control. So I set out to make one.

After looking at how Microsoft made their task switcher control (they use a modified Tab Control), I decided to just use MFC and subclass a CWnd to make mine.

It was actually pretty simple to make. I simply subclassed a CWnd for the button - CSwitcherButton - and subclassed a window to manage the buttons - CSwitcherWnd.

To use, download the source or demo below and add CSwitcherButton.cpp, CSwitcherButton.h, CSwitcherWnd.cpp, and CSwitcherWnd.h to your project. Then, include CSwitcherWnd.h and CSwitcherButton.h in your window or dialog (or whatever file you want to use it in; it *must* be derived from CWnd, tho). An easy way to include these files globally is to include them in stdafx.h or YourApp.h.

To implement, simply create a CSwitcherWnd object, and call DoCreate.

Example:

(m_wndSwitcher created in the .h file)


m_wndSwitcher.DoCreate(this, 0, 200);

Which will create a switcher at the top of the window with width 200.

That about covers it. Enjoy.

Updates MON MAR 15 1999 - JIMMY BRUSH:

  • Fixed RemoveButton to correctly decrement selected button
  • Added CMemDC by Keith Rule
  • Fixed up Animation a bit

Download demo project - 32 KB

Download source - 8 KB



Comments

  • bugs in it.

    Posted by Legacy on 11/18/2000 12:00am

    Originally posted by: Johnthan

    sometime when u click the button "setsel", u can get it appeared.

    Reply
  • Request: modify so also works for CWnd subclassing

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

    Originally posted by: Rick Shide

    It would be nice if you could modify CSwitcherButton so that it could be subclassed and used as a nice stand-alone button on a CDialog or CFormView.  Youl'd just need to init the m_wndParent == NULL in the constructor, and override PreSubclassWindow to set some specific stuff for normal subclassing:
    
    void CSwitcherButton::PreSubclassWindow()
    {
    if (!m_wndParent) { // normal subclassing
    m_wndParent = GetParent();
    }
    CWnd::PreSubclassWindow();
    }

    also need to figure out how to set the window text

    Reply
  • tab control

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

    Originally posted by: James Kilts

    Yeah, windows does use the tab control with the "button look" style applied, but I like this one better.

    Reply
  • Docking/autohide

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

    Originally posted by: Maxim A. Sidorov

    How do you feel about implementing smart docking/autohiding
    
    feature for control alike office bar and windows taskbar itself.
    Should be great!

    Reply
  • Switcher Control

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

    Originally posted by: Rama Krishna

    Why not just use the tab control with button look style applied. That's what is task bar when looked under Spy++.

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

Top White Papers and Webcasts

  • On-demand Event Event Date: September 10, 2014 Modern mobile applications connect systems-of-engagement (mobile apps) with systems-of-record (traditional IT) to deliver new and innovative business value. But the lifecycle for development of mobile apps is also new and different. Emerging trends in mobile development call for faster delivery of incremental features, coupled with feedback from the users of the app "in the wild." This loop of continuous delivery and continuous feedback is how the best mobile …

  • Java developers know that testing code changes can be a huge pain, and waiting for an application to redeploy after a code fix can take an eternity. Wouldn't it be great if you could see your code changes immediately, fine-tune, debug, explore and deploy code without waiting for ages? In this white paper, find out how that's possible with a Java plugin that drastically changes the way you develop, test and run Java applications. Discover the advantages of this plugin, and the changes you can expect to see …

Most Popular Programming Stories

More for Developers

Latest Developer Headlines

RSS Feeds