StatusBar Question in MFC
-
I've created a menu called Tools where in I have created a menu item called Preferences. If we click the Prefernces menu item Preferences Dialog Box will open. In that Dialog Box I have an edit box. The message entered in this edit box is displayed in the second panel of the status bar (i.e) panel no.1. My Requirement is: The second panel should be of a default size and it should grow according to the length of the message entered in the edit box. How can I achieve this in MFC? Can any one help?
-
I've created a menu called Tools where in I have created a menu item called Preferences. If we click the Prefernces menu item Preferences Dialog Box will open. In that Dialog Box I have an edit box. The message entered in this edit box is displayed in the second panel of the status bar (i.e) panel no.1. My Requirement is: The second panel should be of a default size and it should grow according to the length of the message entered in the edit box. How can I achieve this in MFC? Can any one help?
Use CStatusBar::SetPaneInfo( int nIndex, UINT nID, UINT nStyle, int cxWidth ); :)
-
I've created a menu called Tools where in I have created a menu item called Preferences. If we click the Prefernces menu item Preferences Dialog Box will open. In that Dialog Box I have an edit box. The message entered in this edit box is displayed in the second panel of the status bar (i.e) panel no.1. My Requirement is: The second panel should be of a default size and it should grow according to the length of the message entered in the edit box. How can I achieve this in MFC? Can any one help?
you just need to do it as follows: void CPerspectiveDoc::OnShowMsg(CCmdUI* pCmdUI) { CString strValue; strValue.Format("%s", message.GetString()); pCmdUI->Enable(TRUE); pCmdUI->SetText(strValue); CDC* pDC = m_wndStatusBar.GetDC(); CSize mSize = pDC->GetTextExtent(strValue); m_wndStatusBar.SetPaneInfo(1, IDS_MESSAGE, SBPS_NORMAL, mSize.cx); }
freeman
-
you just need to do it as follows: void CPerspectiveDoc::OnShowMsg(CCmdUI* pCmdUI) { CString strValue; strValue.Format("%s", message.GetString()); pCmdUI->Enable(TRUE); pCmdUI->SetText(strValue); CDC* pDC = m_wndStatusBar.GetDC(); CSize mSize = pDC->GetTextExtent(strValue); m_wndStatusBar.SetPaneInfo(1, IDS_MESSAGE, SBPS_NORMAL, mSize.cx); }
freeman
void CPerspectiveDoc::OnShowMsg(CCmdUI* pCmdUI) { char str1[150]; CString strValue; //strValue.SetLength(100); strValue.Format("%s", message.GetString()); //sprintf(str1, "%s",message.GetString()); pCmdUI->Enable(TRUE); pCmdUI->SetText(strValue); CDC* pDC = m_wndStatusBar.GetDC(); CSize mSize = pDC->GetTextExtent(strValue); m_wndStatusBar.SetPaneInfo(1, IDS_MESSAGE, SBPS_NORMAL, mSize.cx); //m_wndStatusBar.SetPaneInfo(1, IDS_MESSAGE, SBPS_STRETCH, len); } When I add this code I got an exception stating , 'Unhandled exception at 0x7c1d71bb (MFC71.dll) in Perspective.exe: 0xC0000005: Access violation writing location 0x00000014.' When I break this exception, it ends in a class barstat.cpp which is not created by me. Also this exception occurs only when we add the status bar variable(m_wndStatusBar) to this class CPerspectiveDoc. The Status Bar Pane is created in some other class. How to resolve this? Pls help -- modified at 4:01 Tuesday 6th February, 2007
-
void CPerspectiveDoc::OnShowMsg(CCmdUI* pCmdUI) { char str1[150]; CString strValue; //strValue.SetLength(100); strValue.Format("%s", message.GetString()); //sprintf(str1, "%s",message.GetString()); pCmdUI->Enable(TRUE); pCmdUI->SetText(strValue); CDC* pDC = m_wndStatusBar.GetDC(); CSize mSize = pDC->GetTextExtent(strValue); m_wndStatusBar.SetPaneInfo(1, IDS_MESSAGE, SBPS_NORMAL, mSize.cx); //m_wndStatusBar.SetPaneInfo(1, IDS_MESSAGE, SBPS_STRETCH, len); } When I add this code I got an exception stating , 'Unhandled exception at 0x7c1d71bb (MFC71.dll) in Perspective.exe: 0xC0000005: Access violation writing location 0x00000014.' When I break this exception, it ends in a class barstat.cpp which is not created by me. Also this exception occurs only when we add the status bar variable(m_wndStatusBar) to this class CPerspectiveDoc. The Status Bar Pane is created in some other class. How to resolve this? Pls help -- modified at 4:01 Tuesday 6th February, 2007
Oh, dear friend, I think u've made a mistake! In my opinion, the CDoc class in your project is constructed before the CMainFrame class, and the status bar is created in Oncreate() function of the CMainFrame class. So, you'd used a status object before you created it. Am I right? OK, U can resolve this by many methods.there r 2 simple resolutions follow: 1. U can do this in the CMainFrame class after the status bar object is created. 2. U can do it in the CView class as the same. -- modified at 4:36 Tuesday 6th February, 2007
freeman