Aktualizowanie tekstu w okienku paska stanu
W tym artykule wyjaśniono, jak zmienić tekst, który pojawia się w okienku Pasek stanu MFC.Pasek stanu — obiekt window klasy CStatusBar — zawiera kilka "okna". Każde okienko jest prostokątny obszar paska stanu, który służy do wyświetlania informacji.Na przykład wiele aplikacji umożliwia wyświetlanie statusu CAPS LOCK, NUM LOCK i innych kluczy w okienku po prawej stronie.Aplikacje także często jest wyświetlany tekst informacyjny w skrajnej lewej okienku (0), czasami nazywane "okienko komunikatu". Na przykład pasek stanu domyślnego MFC używa okienko komunikatu Aby wyświetlić ciąg, wyjaśniając aktualnie wybranego elementu menu lub paska narzędzi przycisku.Rysunek w Paski stanu pokazuje pasek stanu z aplikacji MFC utworzone przez Kreatora aplikacji.
Domyślnie, nie powoduje włączenia MFC CStatusBar okienko podczas tworzenia okienka.Aby uaktywnić okienko, należy użyć ON_UPDATE_COMMAND_UI makro dla każdej tafli na stan paska i zaktualizować okienek.Ponieważ okienek nie wysyłaj WM_COMMAND wiadomości (nie są one jak przyciski paska narzędzi), kod należy wpisać ręcznie.
Załóżmy na przykład, jednym okienku ma ID_INDICATOR_PAGE jako swojego identyfikatora polecenia i że zawiera on numer bieżącej strony w dokumencie.Poniższa procedura opisuje sposób tworzenia nowego okienka na pasku stanu.
Aby nowe okienko
Zdefiniuj identyfikator w okienku polecenie.
Na widoku menu, kliknij przycisk Widoku zasobów.Kliknij prawym przyciskiem myszy zasób projektu i kliknij przycisk Symbole zasobów.W oknie dialogowym symbole zasobów, kliknij przycisk New.Wpisz nazwę polecenia ID: na przykład, ID_INDICATOR_PAGE.Określ wartość dla Identyfikatora lub zaakceptuj wartość sugerowane przez okno dialogowe symbole zasobów.Na przykład, dla ID_INDICATOR_PAGE, należy zaakceptować wartość domyślną.Zamknij okno dialogowe symbole zasobów.
Zdefiniuj domyślny ciąg do wyświetlania w okienku.
Otwórz widok zasobów, kliknij dwukrotnie Tabeli ciągów w oknie, które wyświetla listę typów zasobów dla aplikacji.Z Tabeli ciągów edytorze otwarty, wybierz polecenie Nowy ciąg z Wstaw menu.W oknie właściwości ciągów, wybierz identyfikator polecenia w okienku (na przykład ID_INDICATOR_PAGE) i wpisz domyślną wartość ciągu, takich jak "Strony".Zamknij Edytor ciągu. (Musisz domyślny ciąg, aby uniknąć błędów kompilatora).
Dodać okienka, aby wskaźniki tablicy.
W pliku MAINFRM.CPP, zlokalizuj wskaźniki tablicy.Ta tablica zawiera listę identyfikatorów poleceń dla wszystkich wskaźników na pasku stanu, w kolejności od lewej do prawej.We właściwym momencie w tablicy, wprowadź identyfikator polecenia tego okienka, jak pokazano poniżej, dla ID_INDICATOR_PAGE:
static UINT indicators[] = { ID_SEPARATOR, // status line indicator ID_INDICATOR_CAPS, ID_INDICATOR_NUM, ID_INDICATOR_SCRL, ID_INDICATOR_PAGE, };
Zalecanym sposobem wyświetlania tekstu w okienku jest wywołanie SetText funkcji składowej klasy CCmdUI w funkcję obsługi aktualizacji dla okienka.Na przykład można zdefiniować zmienną liczbę całkowitą m_nPage , który zawiera bieżący numer strony i wykorzystanie SetText Aby ustawić tekst w okienku do wersji ciąg tego numeru.
[!UWAGA]
SetText podejście jest zalecane.Istnieje możliwość wykonać to zadanie na nieco niższym poziomie przez wywołanie CStatusBar funkcji składowej SetPaneText.Mimo to nadal należy program obsługi aktualizacji.Bez takiej obsługi dla okienka MFC automatycznie wyłącza okienko, wymazywanie jego zawartości.
Poniższa procedura pokazuje, jak używać funkcję obsługi aktualizacji do wyświetlania tekstu w okienku.
Aby wyświetlać tekst w okienku
Dodaj program obsługi aktualizacji poleceń dla polecenia.
Ręcznie dodać prototyp obsługi, jak pokazano poniżej, aby uzyskać ID_INDICATOR_PAGE (w MAINFRM.H):
afx_msg void OnUpdatePage(CCmdUI *pCmdUI);
Na odpowiednie.CPP plików, Dodawanie definicji programu obsługi, jak pokazano poniżej, aby uzyskać ID_INDICATOR_PAGE (w MAINFRM.CPP):
void CMainFrame::OnUpdatePage(CCmdUI *pCmdUI) { pCmdUI->Enable(); CString strPage; strPage.Format(_T("Page %d"), m_nPage); pCmdUI->SetText(strPage); }
Ostatnich trzech wierszy tej obsługi jest kod, który wyświetla tekst.
W mapie odpowiedni komunikat, dodać ON_UPDATE_COMMAND_UI makro, jak pokazano poniżej, aby uzyskać ID_INDICATOR_PAGE (w MAINFRM.CPP):
ON_UPDATE_COMMAND_UI(ID_INDICATOR_PAGE, &CMainFrame::OnUpdatePage)
Po zdefiniowaniu wartości m_nPage zmienną (klasy CMainFrame), Metoda ta powoduje, że numer strony do wyświetlania w okienku podczas bezczynności przetwarzania w taki sam sposób, że aplikacja aktualizuje inne wskaźniki.Jeśli m_nPage zmiany, zawartość ekranu zmienia się podczas następnego pętlę bezczynności.