Ответ вроде как напрашивался сам собой. А все оказывается сложнее. И, если ответ b вроде тоже нормальный и можно догадаться, то вот ответ a меня заставил сильно задуматься. Итак, давайте рассмотрим все варианты от простого к сложному.
Если у Вас есть строка состояния то вывести нее надпись можно:
void CMainFrame::OnTestMethod1() { m_wndStatusBar.SetPaneText(0,"Hello"); }
Это вы можете почитать "Шаг 17 - Вывод данных в панель состояния". Сначала номер панели, потом текст.
Опять, если у Вас есть строка состояния, то вывести данные в 0 панель можно с помощью функции SetWindowText() имеено в нулевую. А этот метод унаследован от класса CWnd.
void CMainFrame::OnTestMethod3() { m_wndStatusBar.SetWindowText("Test"); }
И последний метод - это на основе макроса ON_UPDATE_COMMAND_UI. Только здесь все сложнее и писать код нужно руками, так как строка состояния не посылает команд и ClassWizard здесь безпомощен. Для того, чтобы воспользоваться этим методом идентификатор Вашей строки должен быть включен в список панелей.
static UINT indicators[] = { ID_SEPARATOR, // status line indicator ID_INDICATOR_PAGE, ID_INDICATOR_PAGE1, ID_INDICATOR_CAPS, ID_INDICATOR_NUM, ID_INDICATOR_SCRL, };
Записан в ресурсах.
И с этим идентификатором должна быть связана строка, которая будет выводиться по умолчанию.
Теперь в классе рамки окна надо описать функцию OnUpdatePage():
class CMainFrame : public CFrameWnd { protected: // create from serialization only CMainFrame(); DECLARE_DYNCREATE(CMainFrame) afx_msg void OnUpdatePage(CCmdUI *pCmdUI); // Attributes ....... };
И написать эту функцию
void CMainFrame::OnUpdatePage(CCmdUI *pCmdUI) { pCmdUI->Enable(); pCmdUI->SetText(m_nPage ); }
Так же добавить макрос в таблицу событий:
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd) //{{AFX_MSG_MAP(CMainFrame) ON_WM_CREATE() ON_COMMAND(ID_TEST_METHOD1, OnTestMethod1) ON_COMMAND(ID_TEST_METHOD2, OnTestMethod2) ON_UPDATE_COMMAND_UI(ID_INDICATOR_PAGE, OnUpdatePage) ON_COMMAND(ID_TEST_METHOD3, OnTestMethod3) //}}AFX_MSG_MAP END_MESSAGE_MAP()
И теперь стоит изменить переменную m_nPage, как изменения отразятся на строке состояния. Этот макрос вызывается при необходимости обновления пользовательского интерфейса. А MFC это делает при первом удобном случае. Например, когда нет команд от пользователя.