Click here to Skip to main content
11,706,455 members (37,614 online)
Click here to Skip to main content

Statusbar – it’s just so easy to use in MFC

, 19 Feb 2002 208.1K 2.1K 38
Rate this:
Please Sign up or sign in to vote.
How to add your own text to the status bar control using MFC
<!-- Download Links --> <!-- Add the rest of your HTML here -->

Introduction

I just had a look at the MSDN articles on CStatusBar, and to my surprise, I found it so easy to use.

First of all, a status bar contains several 'panes'. Each pane is a rectangular area of the status bar that you can use to display information. As you know, many applications display the status of the CAPS, NUM LOCK, and other keys in the rightmost panes. These panes, by default, have a 3-D border around them. The leftmost pane (pane 0), sometimes called the 'message pane', has the BPS_NOBORDERS style, and therefore doesn’t have any border surrounding it. This pane is usually used to display a string explaining the currently selected menu item or toolbar button. Furthermore, by default, the 'message pane' is 'elastic': it takes up the area of the status-bar not used by the other indicator panes, so that the other panes are always right-aligned.

To add a customized pane to display your own message on the status bar, it only takes the following 6 steps. For this example, we are going to display the current time at the rightmost location of the status bar. It will be updated every 60 seconds.

First of all, add a new entry to your string table with an ID of ID_INDICATOR_TIME and a caption of '%5s “. The extra spaces are to give you a little more room in the pane so the text will not be clipped.

Second, append ID_INDICATOR_TIME to the indicators[] array in the MainFrm.cpp file as the last entry (so that it will appear as the rightmost item on status bar).

Third, in the message map in , add the following:-

afx_msg void OnUpdateTimeIndicator(CcmdUI *pCmdUI);

Fourth, in MainFrm.cpp, add the macro call:-

ON_UPDATE_COMMAND_UI ( ID_INDICATOR_TIME,OnUpdateTimeIndicator)

Fifth, in MainFrm.cpp, create the function body:-

void CMainFrame::OnUpdateTimeIndicator(CCmdUI *pCmdUI)
{
    CString strStatus;

    strStatus.Format(ID_INDICATOR_TIME, time);

    m_wndStatusBar.SetPaneText(
		m_wndStatusBar.CommandToIndex(ID_INDICATOR_TIME),
		strStatus );
}

Last of all, update the variable time every 60 seconds:

#define TIME_STATUSBAR 1

class CMainFrame : public CFrameWnd
{
	……
private:
	char time[7];
	…..
}

void CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
   ……
  SetTimer(TIME_STATUSBAR, 60000, NULL);
  Memset(time, ‘\0’, 7);
   ……
}

void CMainFrame::OnTimer(UINT nIDEvent) 
{
    // TODO: Add your message handler code here and/or call default
    if ( nIDEvent == TIME_STATUSBAR )
    {
        char tempchar[20];
        _strtime(tempchar); // get current time
        strncpy(time, tempchar, 5); // extract only hour and minute info
    }

    CFrameWnd::OnTimer(nIDEvent);
}

The secret here is, whenever variable time changes, the display changes during the next idle loop. This is done automatically by MFC. Isn’t it nice?

If you wish, you can download the sample project, which does the same as described above.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

Share

About the Author

lucy
Software Developer
Canada Canada
I love this place!

You may also be interested in...

Comments and Discussions

 
Questionhow to change pane text when mouse move over diffrent controls? Pin
hvibh29-Nov-02 17:32
memberhvibh29-Nov-02 17:32 
GeneralCannot get time working on MDI :( Pin
Static3-Apr-02 16:23
memberStatic3-Apr-02 16:23 
GeneralRe: Cannot get time working on MDI :( Pin
Static3-Apr-02 16:46
memberStatic3-Apr-02 16:46 
Generalone pane Pin
Doby23-Feb-02 8:29
memberDoby23-Feb-02 8:29 
GeneralRe: one pane Pin
Doby23-Feb-02 23:40
memberDoby23-Feb-02 23:40 
GeneralRe: one pane Pin
Doby24-Feb-02 0:11
memberDoby24-Feb-02 0:11 
GeneralRe: one pane Pin
lucy25-Feb-02 8:02
memberlucy25-Feb-02 8:02 
Generalno topic Pin
Mazdak20-Feb-02 19:58
memberMazdak20-Feb-02 19:58 
This article should be marked as "pre pre beginner" ,but it's useful because I've seen questions about this topic about HUNDRED times in the discussion board. Smile | :)


Another thing I want to say:
Lucy,why do you set timer for every 60 seconds?Does your watch show time for every one minute?;) I have to wait to see changes in demo project for every one minute Dead | X|

<html>Mazy</html>

"So,so you think you can tell,
Heaven from Hell,
Blue skies from pain,...
How I wish,how I wish you were here."
Wish You Were Here-Pink Floyd-1975


GeneralRe: no topic Pin
Nish [BusterBoy]20-Feb-02 20:27
memberNish [BusterBoy]20-Feb-02 20:27 
GeneralRe: no topic Pin
Kannan Kalyanaraman21-Feb-02 2:27
memberKannan Kalyanaraman21-Feb-02 2:27 
GeneralRe: no topic Pin
lucy21-Feb-02 2:52
memberlucy21-Feb-02 2:52 
GeneralRe: no topic Pin
Mazdak21-Feb-02 3:22
memberMazdak21-Feb-02 3:22 
GeneralRe: no topic Pin
HockeyDude21-Feb-02 10:43
memberHockeyDude21-Feb-02 10:43 
GeneralYay, there is actually a female on this site !! Pin
Anonymous20-Feb-02 19:01
memberAnonymous20-Feb-02 19:01 
GeneralRe: Yay, there is actually a female on this site !! Pin
Christian Graus20-Feb-02 19:03
memberChristian Graus20-Feb-02 19:03 
GeneralRe: Yay, there is actually a female on this site !! Pin
Nish [BusterBoy]20-Feb-02 19:14
memberNish [BusterBoy]20-Feb-02 19:14 
GeneralRe: Yay, there is actually a female on this site !! Pin
MesutGencer_9921-Feb-02 5:59
memberMesutGencer_9921-Feb-02 5:59 
GeneralRe: try message board Pin
lucy21-Feb-02 8:39
memberlucy21-Feb-02 8:39 
GeneralRe: Yay, there is actually a female on this site !! Pin
Mazdak21-Feb-02 9:00
memberMazdak21-Feb-02 9:00 
GeneralRe: Yay, there is actually a female on this site !! Pin
lucy21-Feb-02 10:40
memberlucy21-Feb-02 10:40 
GeneralRe: Yay, there is actually a female on this site !! Pin
Mazdak21-Feb-02 19:12
memberMazdak21-Feb-02 19:12 
GeneralRe: Yay, there is actually a female on this site !! Pin
Christian Graus25-Feb-02 8:45
memberChristian Graus25-Feb-02 8:45 
GeneralRe: Yay, there is actually a female on this site !! Pin
Anonymous10-Oct-03 11:24
sussAnonymous10-Oct-03 11:24 
GeneralRe: Yay, there is actually a female on this site !! Pin
HockeyDude21-Feb-02 10:37
memberHockeyDude21-Feb-02 10:37 
GeneralRe: Yay, there is actually a female on this site !! Pin
Kathy Nelson25-Feb-02 8:31
memberKathy Nelson25-Feb-02 8:31 
GeneralRe: Yay, there is actually a female on this site !! Pin
Christian Graus25-Feb-02 8:44
memberChristian Graus25-Feb-02 8:44 
GeneralRe: Yay, there is actually a female on this site !! Pin
Kathy Nelson26-Feb-02 9:19
memberKathy Nelson26-Feb-02 9:19 
GeneralRe: Yay, there is actually a female on this site !! Pin
Nemanja Trifunovic26-Feb-02 9:32
memberNemanja Trifunovic26-Feb-02 9:32 
GeneralRe: Yay, there is actually a female on this site !! Pin
Christian Graus26-Feb-02 10:50
memberChristian Graus26-Feb-02 10:50 
GeneralRe: Yay, there is actually a female on this site !! Pin
Trollslayer6-Jun-03 2:08
memberTrollslayer6-Jun-03 2:08 
GeneralRe: Yay, there is actually a female on this site !! Pin
Christian Graus6-Jun-03 12:11
memberChristian Graus6-Jun-03 12:11 
GeneralAnd thats not the only think thats easy... Pin
Norm Almond20-Feb-02 4:16
memberNorm Almond20-Feb-02 4:16 
GeneralRe: And thats not the only think thats easy... Pin
lucy20-Feb-02 5:12
memberlucy20-Feb-02 5:12 
GeneralRe: And thats not the only think thats easy... Pin
Fazlul Kabir20-Feb-02 6:31
memberFazlul Kabir20-Feb-02 6:31 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Terms of Use | Mobile
Web04 | 2.8.150819.1 | Last Updated 20 Feb 2002
Article Copyright 2002 by lucy
Everything else Copyright © CodeProject, 1999-2015
Layout: fixed | fluid