Raspuns: In mod implicit, o aplicatie SDI/MDI are un statusbar cu patru pane-uri. In primul, framework-ul scrie informatii despre item-ul de meniu sau butonul din toolbar selectat.
In partea dreapta, sunt trei pane-uri pentru starea tastelor "Caps Lock", "Num Lock" si "Scroll Lock". Uneori este necesar de afisat altfel de mesaje, care sa reflecte sa zicem starea unui task, a unui document etc.
Prima tendinta este sa se scrie mesaje custom in acest pane, ceea ce nu este imposibil dar poate crea confuzie pentru utilizator.
Mai indicat este sa se adauge un nou pane (sau mai multe) special pentru mesaje custom, ceva de genul: O metoda simpla care utilizeaza cel mai mult facilitatile framework-ului este urmatoarea:
- in editorul de resurse se adauga un string, de exemplu avand ID-ul ID_INDICATOR_CUSTOM; de notat ca framework-ul va dimensiaona automat pane-ul in functie de lungimea acestui string;
- in fisierul de implementare al frame-ului principal se insereaza ID-ul acelui string intre elementele array-ului indicators:
Code: Select all
// MainFrm.cpp // ... static UINT indicators[] = { ID_SEPARATOR, // status line indicator ID_INDICATOR_CUSTOM, // CUSTOM PANE ID_INDICATOR_CAPS, ID_INDICATOR_NUM, ID_INDICATOR_SCRL, };
- se mapeaza un update command UI handler pentru ID_INDICATOR_CUSTOM:
Code: Select all
// MainFrm.h // ... class CMainFrame : public CMDIFrameWnd { //... afx_msg void OnUpdateIndicatorCustom(CCmdUI* pCmdUI); DECLARE_MESSAGE_MAP() };
Code: Select all
// MainFrm.cpp // ... ON_UPDATE_COMMAND_UI(ID_INDICATOR_CUSTOM, OnUpdateIndicatorCustom) END_MESSAGE_MAP() // ... void CMainFrame::OnUpdateIndicatorCustom(CCmdUI* pCmdUI) { // Call... // pCmdUI->SetText(...); to set the text, or... // pCmdUI->Enable(...); to show/hide the text. }