if (!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
{
TRACE0("未能创建状态栏/n");
return -1; // 未能创建
}
-----------------------------
如何修改状态栏信息响应的消息,及相关处理代码
class CMainFrame : public CFrameWnd
{
protected: // 仅从序列化创建
CMainFrame();
DECLARE_DYNCREATE(CMainFrame)
// 属性
public:
// 操作
public:
// 重写
public:
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
// 实现
public:
。。。。。
virtual void GetMessageString(UINT nID_, CString& rMessage_) const;
。。。。
void LoadStatusbarPaneTxt();
};
void CMainFrame::GetMessageString(UINT nID_, CString& rMessage_) const
{
// load appropriate string
LPTSTR lpsz = rMessage_.GetBuffer(257);
CAxesErrEditorView* _pTarget = GetAxesErrEditorLangManager();
ASSERT(_pTarget);
if (_pTarget->LangLoadString((UINT)nID_, lpsz) != 0)
{
// first newline terminates actual string
lpsz = _tcschr(lpsz, '/n');
if (lpsz != NULL)
*lpsz = '/0';
}
else
{
// not found
TRACE(traceAppMsg, 0, "Warning: no message line prompt for ID 0x%04X./n", nID_);
}
rMessage_.ReleaseBuffer();
}
void CMainFrame::LoadStatusbarPaneTxt()
{
AFX_STATUSPANE* pSBP = (AFX_STATUSPANE*)m_wndStatusBar.m_pData;
const UINT* lpIDArray = indicators;
CAxesErrEditorView* _pTarget = GetAxesErrEditorLangManager();
ASSERT(_pTarget);
for (int i = 0; i < sizeof(indicators)/sizeof(UINT); i++)
{
pSBP->nID = *lpIDArray++;
pSBP->nFlags |= SBPF_UPDATE;
TCHAR _szTxt[256];
if (!_pTarget->LangLoadString((UINT)pSBP->nID, _szTxt))
break;
pSBP->strText = _szTxt;
m_wndStatusBar.SetPaneText(i, pSBP->strText, FALSE);
++pSBP;
}
m_wndStatusBar.SetStatusText(AFX_IDS_IDLEMESSAGE);
}