Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. C / C++ / MFC
  4. Status Pane

Status Pane

Scheduled Pinned Locked Moved C / C++ / MFC
question
20 Posts 5 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • P prasad_som

    You have not answered my first question about index, have you passed 0th index ? And where exactly it is crashing in above code? you are definitely using invalid pointer here.

    Prasad Notifier using ATL | Operator new[],delete[][^]

    T Offline
    T Offline
    T RATHA KRISHNAN
    wrote on last edited by
    #5

    Actually my requirement is to set width of the second pane only. I have told that first pane by mistake. My initial statement, m_wndStatusBar.SetPaneInfo(1,IDS_MESSAGE,SBPS_STRETCH,100); is the right requirement only. If I use this code, I got the afore mentioned exception.(refer last message by me).

    P D 2 Replies Last reply
    0
    • T T RATHA KRISHNAN

      Actually my requirement is to set width of the second pane only. I have told that first pane by mistake. My initial statement, m_wndStatusBar.SetPaneInfo(1,IDS_MESSAGE,SBPS_STRETCH,100); is the right requirement only. If I use this code, I got the afore mentioned exception.(refer last message by me).

      P Offline
      P Offline
      prasad_som
      wrote on last edited by
      #6

      Ok, At which line exactly, debugger is showing crash ? I can run this code in sample SDI app, without any problem.

      Prasad Notifier using ATL | Operator new[],delete[][^]

      T 1 Reply Last reply
      0
      • P prasad_som

        Ok, At which line exactly, debugger is showing crash ? I can run this code in sample SDI app, without any problem.

        Prasad Notifier using ATL | Operator new[],delete[][^]

        T Offline
        T Offline
        T RATHA KRISHNAN
        wrote on last edited by
        #7

        If I remove the comments from this line, //m_wndStatusBar.SetPaneInfo(1,IDS_MESSAGE,SBPS_NORMAL,100); an exception occurs. If I break that exception, it goes to a file called barstat.cpp void CStatusBar::SetPaneInfo(int nIndex, UINT nID, UINT nStyle, int cxWidth) { ASSERT_VALID(this); BOOL bChanged = FALSE; AFX_STATUSPANE* pSBP = _GetPanePtr(nIndex); pSBP->nID = nID; if (pSBP->nStyle != nStyle) ********{ if ((pSBP->nStyle ^ nStyle) & SBPS_STRETCH) bChanged = TRUE; else { pSBP->nStyle = nStyle; pSBP->nFlags |= SBPF_UPDATE; SetPaneText(nIndex, pSBP->strText); } pSBP->nStyle = nStyle; } if (cxWidth != pSBP->cxText) { // change width of one pane -> invalidate the entire status bar pSBP->cxText = cxWidth; bChanged = TRUE; } if (bChanged) UpdateAllPanes(TRUE, FALSE); } The yellow pointer appears in the line where ******** is shown. What may be the problem? -- modified at 1:27 Monday 12th February, 2007

        P H 2 Replies Last reply
        0
        • T T RATHA KRISHNAN

          If I remove the comments from this line, //m_wndStatusBar.SetPaneInfo(1,IDS_MESSAGE,SBPS_NORMAL,100); an exception occurs. If I break that exception, it goes to a file called barstat.cpp void CStatusBar::SetPaneInfo(int nIndex, UINT nID, UINT nStyle, int cxWidth) { ASSERT_VALID(this); BOOL bChanged = FALSE; AFX_STATUSPANE* pSBP = _GetPanePtr(nIndex); pSBP->nID = nID; if (pSBP->nStyle != nStyle) ********{ if ((pSBP->nStyle ^ nStyle) & SBPS_STRETCH) bChanged = TRUE; else { pSBP->nStyle = nStyle; pSBP->nFlags |= SBPF_UPDATE; SetPaneText(nIndex, pSBP->strText); } pSBP->nStyle = nStyle; } if (cxWidth != pSBP->cxText) { // change width of one pane -> invalidate the entire status bar pSBP->cxText = cxWidth; bChanged = TRUE; } if (bChanged) UpdateAllPanes(TRUE, FALSE); } The yellow pointer appears in the line where ******** is shown. What may be the problem? -- modified at 1:27 Monday 12th February, 2007

          P Offline
          P Offline
          prasad_som
          wrote on last edited by
          #8

          T.RATHA KRISHNAN wrote:

          AFX_STATUSPANE* pSBP = _GetPanePtr(nIndex); pSBP->nID = nID; if (pSBP->nStyle != nStyle)

          It may be beacuase, pSBP is NULL. Are you sure, there are two panes present in status bar ? Have you called this function after creating status bar ?

          Prasad Notifier using ATL | Operator new[],delete[][^]

          T 1 Reply Last reply
          0
          • T T RATHA KRISHNAN

            If I remove the comments from this line, //m_wndStatusBar.SetPaneInfo(1,IDS_MESSAGE,SBPS_NORMAL,100); an exception occurs. If I break that exception, it goes to a file called barstat.cpp void CStatusBar::SetPaneInfo(int nIndex, UINT nID, UINT nStyle, int cxWidth) { ASSERT_VALID(this); BOOL bChanged = FALSE; AFX_STATUSPANE* pSBP = _GetPanePtr(nIndex); pSBP->nID = nID; if (pSBP->nStyle != nStyle) ********{ if ((pSBP->nStyle ^ nStyle) & SBPS_STRETCH) bChanged = TRUE; else { pSBP->nStyle = nStyle; pSBP->nFlags |= SBPF_UPDATE; SetPaneText(nIndex, pSBP->strText); } pSBP->nStyle = nStyle; } if (cxWidth != pSBP->cxText) { // change width of one pane -> invalidate the entire status bar pSBP->cxText = cxWidth; bChanged = TRUE; } if (bChanged) UpdateAllPanes(TRUE, FALSE); } The yellow pointer appears in the line where ******** is shown. What may be the problem? -- modified at 1:27 Monday 12th February, 2007

            H Offline
            H Offline
            Hamid Taebi
            wrote on last edited by
            #9

            Is pSBP valid?


            WhiteSky


            1 Reply Last reply
            0
            • P prasad_som

              T.RATHA KRISHNAN wrote:

              AFX_STATUSPANE* pSBP = _GetPanePtr(nIndex); pSBP->nID = nID; if (pSBP->nStyle != nStyle)

              It may be beacuase, pSBP is NULL. Are you sure, there are two panes present in status bar ? Have you called this function after creating status bar ?

              Prasad Notifier using ATL | Operator new[],delete[][^]

              T Offline
              T Offline
              T RATHA KRISHNAN
              wrote on last edited by
              #10

              Yes, There are two status bar panes. I've called SetPaneInfo function after creating the Status Bar only. The code for displaying message in the status bar pane is, void CPerspectiveDoc::OnShowMsg(CCmdUI* pCmdUI) { char str1[150]; //int len = message.GetLength(); sprintf(str1, "%s",message.GetString()); CDC* pDC = m_wndStatusBar.GetDC(); pDC->SetTextAlign(TA_RIGHT); pCmdUI->Enable(TRUE); //m_wndStatusBar.SetPaneInfo(1,IDS_MESSAGE,SBPS_NORMAL,100); pCmdUI->SetText((const char *)str1); //m_wndStatusBar.SetPaneInfo(1, IDS_MESSAGE, SBPS_STRETCH, len); } Here this line, CDC* pDC = m_wndStatusBar.GetDC(); compiles without any problem. This line also, pDC->SetTextAlign(TA_RIGHT); compiles without problem. But not displaying message right aligned. If I remove commenting from this line, //m_wndStatusBar.SetPaneInfo(1,IDS_MESSAGE,SBPS_NORMAL,100); then only that exception occurs.

              P K 2 Replies Last reply
              0
              • T T RATHA KRISHNAN

                Yes, There are two status bar panes. I've called SetPaneInfo function after creating the Status Bar only. The code for displaying message in the status bar pane is, void CPerspectiveDoc::OnShowMsg(CCmdUI* pCmdUI) { char str1[150]; //int len = message.GetLength(); sprintf(str1, "%s",message.GetString()); CDC* pDC = m_wndStatusBar.GetDC(); pDC->SetTextAlign(TA_RIGHT); pCmdUI->Enable(TRUE); //m_wndStatusBar.SetPaneInfo(1,IDS_MESSAGE,SBPS_NORMAL,100); pCmdUI->SetText((const char *)str1); //m_wndStatusBar.SetPaneInfo(1, IDS_MESSAGE, SBPS_STRETCH, len); } Here this line, CDC* pDC = m_wndStatusBar.GetDC(); compiles without any problem. This line also, pDC->SetTextAlign(TA_RIGHT); compiles without problem. But not displaying message right aligned. If I remove commenting from this line, //m_wndStatusBar.SetPaneInfo(1,IDS_MESSAGE,SBPS_NORMAL,100); then only that exception occurs.

                P Offline
                P Offline
                prasad_som
                wrote on last edited by
                #11

                Show the code, how you have created this status bar ?

                Prasad Notifier using ATL | Operator new[],delete[][^]

                T 1 Reply Last reply
                0
                • P prasad_som

                  Show the code, how you have created this status bar ?

                  Prasad Notifier using ATL | Operator new[],delete[][^]

                  T Offline
                  T Offline
                  T RATHA KRISHNAN
                  wrote on last edited by
                  #12

                  The code for creating Status Bar is, if (!m_wndStatusBar.Create(this) || !m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT))) { TRACE0("Failed to create status bar\n"); return -1; } Here is the Indicators. static UINT indicators[] = { 0,// ID_SEPARATOR IDS_MESSAGE, ID_SHOWFPS, }; IDS_MESSAGE is the ID of the second pane. The pane in which we display the message. ID_SHOWFPS is the ID of the First pane. I display the message in some other class using the following code. void CPerspectiveDoc::OnShowMsg(CCmdUI* pCmdUI) { char str1[150]; //int len = message.GetLength(); sprintf(str1, "%s",message.GetString()); CDC* pDC = m_wndStatusBar.GetDC(); pDC->SetTextAlign(TA_RIGHT); pCmdUI->Enable(TRUE); //m_wndStatusBar.SetPaneInfo(1,IDS_MESSAGE,SBPS_NORMAL,100); pCmdUI->SetText((const char *)str1); //m_wndStatusBar.SetPaneInfo(1, IDS_MESSAGE, SBPS_STRETCH, len); }

                  P K D 3 Replies Last reply
                  0
                  • T T RATHA KRISHNAN

                    The code for creating Status Bar is, if (!m_wndStatusBar.Create(this) || !m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT))) { TRACE0("Failed to create status bar\n"); return -1; } Here is the Indicators. static UINT indicators[] = { 0,// ID_SEPARATOR IDS_MESSAGE, ID_SHOWFPS, }; IDS_MESSAGE is the ID of the second pane. The pane in which we display the message. ID_SHOWFPS is the ID of the First pane. I display the message in some other class using the following code. void CPerspectiveDoc::OnShowMsg(CCmdUI* pCmdUI) { char str1[150]; //int len = message.GetLength(); sprintf(str1, "%s",message.GetString()); CDC* pDC = m_wndStatusBar.GetDC(); pDC->SetTextAlign(TA_RIGHT); pCmdUI->Enable(TRUE); //m_wndStatusBar.SetPaneInfo(1,IDS_MESSAGE,SBPS_NORMAL,100); pCmdUI->SetText((const char *)str1); //m_wndStatusBar.SetPaneInfo(1, IDS_MESSAGE, SBPS_STRETCH, len); }

                    P Offline
                    P Offline
                    prasad_som
                    wrote on last edited by
                    #13

                    T.RATHA KRISHNAN wrote:

                    if (!m_wndStatusBar.Create(this) || !m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT))) { TRACE0("Failed to create status bar\n"); return -1; }

                    I'm seeing nothing wrong with your code, its creation is succesful. May be you mail send across your sample code ay prasad.som at mail dot com.

                    Prasad Notifier using ATL | Operator new[],delete[][^]

                    T 1 Reply Last reply
                    0
                    • T T RATHA KRISHNAN

                      Yes, There are two status bar panes. I've called SetPaneInfo function after creating the Status Bar only. The code for displaying message in the status bar pane is, void CPerspectiveDoc::OnShowMsg(CCmdUI* pCmdUI) { char str1[150]; //int len = message.GetLength(); sprintf(str1, "%s",message.GetString()); CDC* pDC = m_wndStatusBar.GetDC(); pDC->SetTextAlign(TA_RIGHT); pCmdUI->Enable(TRUE); //m_wndStatusBar.SetPaneInfo(1,IDS_MESSAGE,SBPS_NORMAL,100); pCmdUI->SetText((const char *)str1); //m_wndStatusBar.SetPaneInfo(1, IDS_MESSAGE, SBPS_STRETCH, len); } Here this line, CDC* pDC = m_wndStatusBar.GetDC(); compiles without any problem. This line also, pDC->SetTextAlign(TA_RIGHT); compiles without problem. But not displaying message right aligned. If I remove commenting from this line, //m_wndStatusBar.SetPaneInfo(1,IDS_MESSAGE,SBPS_NORMAL,100); then only that exception occurs.

                      K Offline
                      K Offline
                      kasturi_haribabu
                      wrote on last edited by
                      #14

                      I think its strange that one problem persists for such a long time... :sigh: I have some questions for you. 1. Have you used "SetIndicators" function? >> If you are not using function, your prograam will definitely crash. 2. What is the idea behind doing these operations in a DOC class? 3. Is it possible to share the code you are using to create status bars? thanks and regards haribabu

                      T 1 Reply Last reply
                      0
                      • T T RATHA KRISHNAN

                        The code for creating Status Bar is, if (!m_wndStatusBar.Create(this) || !m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT))) { TRACE0("Failed to create status bar\n"); return -1; } Here is the Indicators. static UINT indicators[] = { 0,// ID_SEPARATOR IDS_MESSAGE, ID_SHOWFPS, }; IDS_MESSAGE is the ID of the second pane. The pane in which we display the message. ID_SHOWFPS is the ID of the First pane. I display the message in some other class using the following code. void CPerspectiveDoc::OnShowMsg(CCmdUI* pCmdUI) { char str1[150]; //int len = message.GetLength(); sprintf(str1, "%s",message.GetString()); CDC* pDC = m_wndStatusBar.GetDC(); pDC->SetTextAlign(TA_RIGHT); pCmdUI->Enable(TRUE); //m_wndStatusBar.SetPaneInfo(1,IDS_MESSAGE,SBPS_NORMAL,100); pCmdUI->SetText((const char *)str1); //m_wndStatusBar.SetPaneInfo(1, IDS_MESSAGE, SBPS_STRETCH, len); }

                        K Offline
                        K Offline
                        kasturi_haribabu
                        wrote on last edited by
                        #15

                        If you call, m_wndStatusBar.SetPaneInfo(0, IDS_MESSAGE, SBPS_STRETCH, len); is program crashing?

                        1 Reply Last reply
                        0
                        • K kasturi_haribabu

                          I think its strange that one problem persists for such a long time... :sigh: I have some questions for you. 1. Have you used "SetIndicators" function? >> If you are not using function, your prograam will definitely crash. 2. What is the idea behind doing these operations in a DOC class? 3. Is it possible to share the code you are using to create status bars? thanks and regards haribabu

                          T Offline
                          T Offline
                          T RATHA KRISHNAN
                          wrote on last edited by
                          #16

                          Here is the indicators array. static UINT indicators[] = { 0,// ID_SEPARATOR IDS_MESSAGE, ID_SHOWFPS, }; The code that is used to create status bars. if (!m_wndStatusBar.Create(this) || !m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT))) { TRACE0("Failed to create status bar\n"); return -1; } These two codes are in the same file only(MainFrm.cpp)

                          1 Reply Last reply
                          0
                          • P prasad_som

                            T.RATHA KRISHNAN wrote:

                            if (!m_wndStatusBar.Create(this) || !m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT))) { TRACE0("Failed to create status bar\n"); return -1; }

                            I'm seeing nothing wrong with your code, its creation is succesful. May be you mail send across your sample code ay prasad.som at mail dot com.

                            Prasad Notifier using ATL | Operator new[],delete[][^]

                            T Offline
                            T Offline
                            T RATHA KRISHNAN
                            wrote on last edited by
                            #17

                            Could U pls send me your correct email ID? (like this one rtr_18@yahoo.com)

                            D 1 Reply Last reply
                            0
                            • T T RATHA KRISHNAN

                              Actually my requirement is to set width of the second pane only. I have told that first pane by mistake. My initial statement, m_wndStatusBar.SetPaneInfo(1,IDS_MESSAGE,SBPS_STRETCH,100); is the right requirement only. If I use this code, I got the afore mentioned exception.(refer last message by me).

                              D Offline
                              D Offline
                              David Crow
                              wrote on last edited by
                              #18

                              T.RATHA KRISHNAN wrote:

                              Actually my requirement is to set width of the second pane only.

                              Do you have to use SetPaneInfo() to do this?


                              "Approved Workmen Are Not Ashamed" - 2 Timothy 2:15

                              "Judge not by the eye but by the heart." - Native American Proverb

                              1 Reply Last reply
                              0
                              • T T RATHA KRISHNAN

                                The code for creating Status Bar is, if (!m_wndStatusBar.Create(this) || !m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT))) { TRACE0("Failed to create status bar\n"); return -1; } Here is the Indicators. static UINT indicators[] = { 0,// ID_SEPARATOR IDS_MESSAGE, ID_SHOWFPS, }; IDS_MESSAGE is the ID of the second pane. The pane in which we display the message. ID_SHOWFPS is the ID of the First pane. I display the message in some other class using the following code. void CPerspectiveDoc::OnShowMsg(CCmdUI* pCmdUI) { char str1[150]; //int len = message.GetLength(); sprintf(str1, "%s",message.GetString()); CDC* pDC = m_wndStatusBar.GetDC(); pDC->SetTextAlign(TA_RIGHT); pCmdUI->Enable(TRUE); //m_wndStatusBar.SetPaneInfo(1,IDS_MESSAGE,SBPS_NORMAL,100); pCmdUI->SetText((const char *)str1); //m_wndStatusBar.SetPaneInfo(1, IDS_MESSAGE, SBPS_STRETCH, len); }

                                D Offline
                                D Offline
                                David Crow
                                wrote on last edited by
                                #19

                                T.RATHA KRISHNAN wrote:

                                static UINT indicators[] = { 0,// ID_SEPARATOR IDS_MESSAGE, ID_SHOWFPS, }; IDS_MESSAGE is the ID of the second pane.

                                Do you have an entry for IDS_MESSAGE in the stringtable resource?


                                "Approved Workmen Are Not Ashamed" - 2 Timothy 2:15

                                "Judge not by the eye but by the heart." - Native American Proverb

                                1 Reply Last reply
                                0
                                • T T RATHA KRISHNAN

                                  Could U pls send me your correct email ID? (like this one rtr_18@yahoo.com)

                                  D Offline
                                  D Offline
                                  David Crow
                                  wrote on last edited by
                                  #20

                                  T.RATHA KRISHNAN wrote:

                                  Could U pls send me your correct email ID?

                                  It is correct.


                                  "Approved Workmen Are Not Ashamed" - 2 Timothy 2:15

                                  "Judge not by the eye but by the heart." - Native American Proverb

                                  1 Reply Last reply
                                  0
                                  Reply
                                  • Reply as topic
                                  Log in to reply
                                  • Oldest to Newest
                                  • Newest to Oldest
                                  • Most Votes


                                  • Login

                                  • Don't have an account? Register

                                  • Login or register to search.
                                  • First post
                                    Last post
                                  0
                                  • Categories
                                  • Recent
                                  • Tags
                                  • Popular
                                  • World
                                  • Users
                                  • Groups