Durum çubuğu bölmesinin metin güncelleştiriliyor
Bu makalede, mfc durum çubuğu bölmesinde görüntülenen metni değiştirmek açıklar. Durum çubuğunu — bir window nesnesi sınıf CStatusBar — içeren birkaç "bölmeleri." Her dikdörtgen bir alanı bilgilerini görüntülemek için kullanabileceğiniz durum çubuğunun bölmesidir. Örneğin, birçok uygulama, en sağdaki bölmelerinde caps lock, num lock ve diğer anahtarların durumunu görüntüleyin. Uygulamalar da genellikle "ileti bölmesinde" olarak da adlandırılan bilgilendirici metinde en soldaki bölme (0), görüntüleme Örneğin, mfc durum çubuğunda varsayılan ileti bölmesinde seçili menü öğesi veya araç çubuğu düğmesini açıklayan bir dizesini görüntülemek için kullanır. Resimde Durum çubukları mfc uygulaması Sihirbazı tarafından oluşturulan uygulamasından durum çubuğunu gösterir.
Varsayılan olarak, mfc değil etkinleştirmek bir CStatusBar bölmesi oluşturduğunda bölmesi. Bir bölmeyi etkinleştirmek için kullanmanız gerekir ON_UPDATE_COMMAND_UI durum her bölme için makro çubuk ve bölmeleri güncelleştirin. Bölmeleri göndermediğiniz çünkü wm_command iletileri (bunlar gibi araç çubuğu düğmeleri olmayan), kodunu el ile yazmanız gerekir.
Örneğin, bir bölme olduğunu varsayalım ID_INDICATOR_PAGE komut tanımlayıcısını ve bu belgedeki geçerli sayfa numarasını içerir. Aşağıdaki yordamda, durum çubuğunda yeni bir bölme oluşturma açıklanmaktadır.
Yeni bir bölme yapmak için
Bölmeyi 's komut kimliği tanımla
Üzerinde View menüsünde'ı Kaynak görünümü. Proje kaynağı sağ tıklatın ve Kaynak sembolleri. Kaynak simgeler iletişim kutusunda'ı New. Komut Kimliği adını yazın: Örneğin, ID_INDICATOR_PAGE. Kimliği için bir değer belirtin veya kaynak simgeler iletişim kutusu tarafından önerilen değerini kabul edin. Örneğin, ID_INDICATOR_PAGE, varsayılan değerini kabul edin. Kaynak simge iletişim kutusunu kapatın.
Bölmesinde görüntülenecek varsayılan dizesi tanımlayın.
Açık kaynak görünümü ile çift Dize tablosu penceresinde uygulamanız için kaynak türlerini listeler. İle Dize tablosu Düzenleyicisi açıkken, seçmek Yeni bir dize dan Ekle menü. Bölme 's komut kimliği dizesi Properties penceresinde seçin (örneğin, ID_INDICATOR_PAGE) ve "Sayfa" gibi varsayılan bir dize değerini yazın. Dize Düzenleyicisi'ni kapatın. (Derleyici hata önlemek için varsayılan dize gerekir.)
Bölmesine göstergeleri dizi.
Dosya MAINFRM.cpp, bulup göstergeleri dizi. Bu dizinin tüm durum çubuğunun göstergeleri, soldan sağa doğru sırayla komut kimliklerini listeler. Dizi uygun noktada bölmesi 's komut kimliği için aşağıda gösterildiği gibi girin ID_INDICATOR_PAGE:
static UINT indicators[] = { ID_SEPARATOR, // status line indicator ID_INDICATOR_CAPS, ID_INDICATOR_NUM, ID_INDICATOR_SCRL, ID_INDICATOR_PAGE, };
Aranacak metin Bölmesi'nde görüntülemek için önerilen yol olan SetText sınıfının üye işlev CCmdUI bir güncelleştirme işlevini bölmesi içinde. Örneğin, bir tamsayı değişken ayarlamak isteyebilirsiniz m_nPage geçerli sayfa numarasını ve kullanımını içeren SetText bu sayının dize sürümü Bölmesi'nin metin ayarlamak için.
Not
SetText yaklaşım önerilir.Çağırarak biraz daha düşük bir düzeyde bu görevi gerçekleştirmek mümkün CStatusBar üye işlev SetPaneText.Böyle olsa bile, yine de bir güncelleştirme işleyicisi gerekir.Devre dışı böyle bir işleyici bölmesi, mfc otomatik olarak bölmesinin içeriğini silme bırakır.
Aşağıdaki yordam, güncelleştirme işleyici işlevi bir Bölmesi'ndeki metni görüntülemek için nasıl kullanılacağını gösterir.
Metni görüntülemek için bir bölme yapmak için
Komut için komut update işleyici ekleyin.
Prototip işleyici için aşağıda gösterildiği gibi el ile eklemeniz ID_INDICATOR_PAGE (içinde MAINFRM.H):
afx_msg void OnUpdatePage(CCmdUI *pCmdUI);
Uygun biçimde.cpp dosya, işleyicinin tanımı için aşağıda gösterildiği gibi eklemek ID_INDICATOR_PAGE (içinde MAINFRM.CPP):
void CMainFrame::OnUpdatePage(CCmdUI *pCmdUI) { pCmdUI->Enable(); CString strPage; strPage.Format(_T("Page %d"), m_nPage); pCmdUI->SetText(strPage); }
Bu işleyici son üç satırlık metin görüntüleyen kod ' dir.
Uygun ileti Haritayı eklemek ON_UPDATE_COMMAND_UI için aşağıda gösterildiği gibi makro ID_INDICATOR_PAGE (içinde MAINFRM.CPP):
ON_UPDATE_COMMAND_UI(ID_INDICATOR_PAGE, &CMainFrame::OnUpdatePage)
Değeri tanımladıktan sonra m_nPage üye değişkeni (sınıfının CMainFrame), bu tekniği boşta işlemi sırasında aynı şekilde uygulama diğer göstergeleri güncelleştirmeleri bölmesinde görünmesini sayfa numarası neden olur. m_nPage Değişiklikler, sonraki işlevsiz döngü sırasında görüntü değişiklikleri.