Re: update status in main frame window
Thanks AIR.
I followed the MSDN documentation
msdn.microsoft.com/en-us/library/a9ys3wsb.aspx
, and I created a handler
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
...
ON_UPDATE_COMMAND_UI(ID_INDICATOR_TEST, OnUpdatePage)
END_MESSAGE_MAP()
static UINT indicators[] =
{
ID_SEPARATOR, // status line indicator
ID_INDICATOR_CONNECTSTATUS,
};
void CMainFrame::OnUpdatePage(CCmdUI *pCmdUI)
{
pCmdUI->Enable();
CString strPage;
strPage.Format(_T("TEST1)"));
pCmdUI->SetText(strPage);
}
Then in my child dialog, how can I call this handler to replace TEST1
with TEST2 at the status pane ?
in child function, I set
CMainFrame *pMain = (CMainFrame*) AfxGetMainWnd();
pMain->OnUpdatePage ...?
Thanks.
Regards,
Kenji
On Dec 3, 1:54 am, "AliR \(VC++ MVP\)" <A...@online.nospam> wrote:
1. WM_SETSTATUS is an example of a custom message. You will have to defin=
e
it somewhere. (I typically put them in a file called messages.h)
#define WM_SETSTATUS WM_APP+1
Then you need to put a handler for WM_SETSTATUS in your CMainFrame window
and there do the m_wndStatusBar.SetPaneText
2. You will accomplish this the same way you change the status window tex=
t.
You tell the main frame which menu to disable, and it has to keep track o=
f
this information and when the OnUpdateUI handler of the menu item is call=
ed
you are able to disable it there. If you have any questions on how the
ON_UPDATE_COMMAND_UI works let me know.
AliR.
<aloha...@gmail.com> wrote in message
news:17302485-3f24-4ad6-9534-1e1e272c4e98@u18g2000pro.googlegroups.com...
Hi,
1. ok. I used the AfxGetMainWnd()->SendMessage(WM_SETSTATUS,0,pStr);
but I got:
error C2065: 'WM_SETSTATUS' : undeclared identifier
how to declare it ?
2. One more thing is how can I SendMessage to disable certain menu in
main frame window ?
Many thank to your kind help.
Regards.
On Dec 3, 1:21 am, "AliR \(VC++ MVP\)" <A...@online.nospam> wrote:
There are several ways.
From you button handler you can either do this:
CMainFrame *pWnd = (CMainFrame *)AfxGetMainWnd();
ASSERT(pWnd);
pWnd->GetStatusBar().SetPaneText(0,"Test 123");
note that you need to write a method for GetStatusBar in your CMainFram=
e
class
CStatusBar &GetStatusBar();
Or you can send a message to the main window
AfxGetMainWnd()->SendMessage(WM_SETSTATUS,0,pStr);
AliR.
<aloha...@gmail.com> wrote in message
news:66d2d089-60c1-453a-8f4e-c0e052ad0e71@z6g2000pre.googlegroups.com...
Hi Expert,
I'm using SDI application
In Mainfrm.cpp, i have
static UINT indicators[] =
{
ID_SEPARATOR, // status line indicator
ID_INDICATOR_TEST,
};
I added a child dialog with one test button on it.
The child dialog is triggered via menu in main frame windows. the
class of child dialog is CDialog base.
class CChildDlg : public CDialog
{
public:
CChildDlg();
...
}
void CMainApp::OnEditDialog()
{
CChildDlg childDlg;
childDlg.DoModal();
}
void CChildDlg::OnBtnTest()
{
// how can I update the status bar in main frame windows ?
// the following code will trigger exception...!!!
CStatusBar m_wndStatusBar;
m_wndStatusBar.CommandToIndex(ID_INDICATOR_TEST);
m_wndStatusBar.SetPaneText(0, "TEST 123", TRUE);
m_wndStatusBar.UpdateWindow();
}
How can I update the status bar in main frame windows, upon clicking
Test button.
Thanks in advance.
Regards,
Kenji