定义
状态栏空闲消息提示字符串ID。
《VC\atlmfc\include\afxres.h》
// idle message bar line
#define AFX_IDS_IDLEMESSAGE 0xE001
原理
在CFrameWnd类的OnCreateHelper函数中,推送WM_SETMESSAGESTRING消息,消息参数是AFX_IDS_IDLEMESSAGE(状态栏空闲消息提示字符串ID),然后调用CFrameWnd类的GetMessageString函数,通过AFX_IDS_IDLEMESSAGE(状态栏空闲消息提示字符串ID)获取对应的字符串。
《VC\atlmfc\src\mfc\winfrm.cpp》
int CFrameWnd::OnCreateHelper(LPCREATESTRUCT lpcs,CCreateContext* pContext)
{
if (CWnd::OnCreate(lpcs)== -1)
return -1;
// create special children first
if (!OnCreateClient(lpcs, pContext))
{
TRACE(traceAppMsg,0, "Failed to create client pane/view forframe.\n");
return -1;
}
// post message for initial message string
PostMessage(WM_SETMESSAGESTRING,AFX_IDS_IDLEMESSAGE);
// make sure the child windows have been properly sized
RecalcLayout();
return 0; // create ok
}
修改
在CFrameWnd派生的类中添加如下代码,如单文档的“CMainFrame”、“CChildFrame”都需要添加才会实现修改。
class CChildFrame : publicCMDIChildWnd
{
.....
void GetMessageString(UINT nID,CString& rMessage) const;
};
void CChildFrame::GetMessageString(UINT nID,CString& rMessage) const
{
if(nID == AFX_IDS_IDLEMESSAGE)
{
if(theApp._nLangue == 0)
{
rMessage =_T("就绪");;
}
else
{
rMessage =_T("Ready");
}
return;
}
CFrameWnd::GetMessageString(nID,rMessage); //调用默认的处理过程
}