這篇文章說明如何變更在 MFC 狀態列窗格中顯示的文字。 狀態列上 — 視窗物件類別的 CStatusBar — 包含多個 「 窗格 」。每個窗格是狀態列的您可用來顯示資訊的矩形區域。 比方說,許多應用程式會在最右邊的窗格中顯示 CAPS LOCK、 NUM LOCK 鍵和其他按鍵的狀態。 應用程式通常也會顯示的資訊文字中最左邊的窗格 (窗格 0),有時也稱為 「 郵件窗格 」。例如,預設的 MFC 狀態列以訊息窗格顯示字串,用以說明目前選取的功能表項目或工具列按鈕。 在 [圖狀態列會顯示從應用程式精靈所建立的 MFC 應用程式的狀態列。
根據預設,MFC 並不會啟用CStatusBar時,它會建立窗格] 窗格。 若要啟用一個窗格,您必須使用ON_UPDATE_COMMAND_UI的巨集狀態的每個窗格,橫條圖,並更新 [] 窗格。 因為窗格不會傳送 WM_COMMAND 郵件 (不與工具列按鈕),您必須以手動方式輸入程式碼。
例如,假設有一個窗格ID_INDICATOR_PAGE作為其目的命令識別項,並包含文件中目前所在的頁碼。 下列程序說明如何建立新的窗格,在狀態列上。
若要建立新窗格
定義窗格的命令 id。
在檢視 ] 功能表中,按一下 資源檢視。 以滑鼠右鍵按一下專案資源,按一下 [ 資源符號。 在 [資源符號] 對話方塊中,按一下 New。 請輸入指令識別碼名稱: 例如, ID_INDICATOR_PAGE。 指定為 ID 的值,或接受 [資源符號] 對話方塊所建議的值。 例如,對於ID_INDICATOR_PAGE,接受預設值。 關閉 [資源符號] 對話方塊。
定義預設字串以顯示在窗格中。
資源檢視開啟時,請連按兩下 [ 字串資料表 ,其中列出資源類型對您的應用程式視窗中。 與字串資料表 編輯器開啟時,選擇 新的字串 的 插入功能表。 在 [字串屬性] 視窗中,選取 [窗格中的命令 ID (比方說, ID_INDICATOR_PAGE),然後輸入預設字串值,例如 「 頁 」。 關閉字串編輯器。 (您需要預設字串以避免發生編譯器錯誤)。
新增至窗格指示器陣列。
在檔案 MAINFRM。CPP,找出指示器陣列。 這個陣列會列出所有狀態列指示器,以由左到右的順序的命令 Id。 在相稱的點陣列中,輸入如下所示的窗格中的命令 ID, ID_INDICATOR_PAGE:
static UINT indicators[] = { ID_SEPARATOR, // status line indicator ID_INDICATOR_CAPS, ID_INDICATOR_NUM, ID_INDICATOR_SCRL, ID_INDICATOR_PAGE, };
在窗格中顯示文字的建議的方式是呼叫 SetText 成員函式類別的CCmdUI在窗格的更新處理常式函式。 比方說,您可能想要設定一個整數變數m_nPage ,包含目前頁碼與使用 SetText 設定窗格的文字,以該數字的字串版本。
注意事項 |
---|
SetText 建議使用方法。可以執行這項工作在較低層級,藉由呼叫CStatusBar成員函式SetPaneText。即便如此,您仍然需要更新處理常式。沒有這類的處理常式的窗格,MFC 會自動關閉窗格中,清除其內容。 |
下列程序會示範如何使用在一個窗格中顯示文字的更新處理常式函式。
窗格內顯示文字
加入命令更新處理常式的指令。
以手動方式加入原型處理常式,如下所示的ID_INDICATOR_PAGE (在 MAINFRM。H):
afx_msg void OnUpdatePage(CCmdUI *pCmdUI);
在適當的。CPP 檔案中加入處理常式的定義,如下所示的ID_INDICATOR_PAGE (在 MAINFRM。CPP):
void CMainFrame::OnUpdatePage(CCmdUI *pCmdUI) { pCmdUI->Enable(); CString strPage; strPage.Format(_T("Page %d"), m_nPage); pCmdUI->SetText(strPage); }
此處理常式的最後三行是其程式碼顯示您的文字。
在適當的訊息對應,加入ON_UPDATE_COMMAND_UI巨集,如下所示的ID_INDICATOR_PAGE (在 MAINFRM。CPP):
ON_UPDATE_COMMAND_UI(ID_INDICATOR_PAGE, &CMainFrame::OnUpdatePage)
一旦您定義的值m_nPage成員變數 (類別的CMainFrame),這項技術會使頁碼出現在窗格在閒置處理應用程式更新其他指示器相同的方式。 如果m_nPage的變更,在下一個閒置迴圈期間顯示中的有所變更。