笔者的软件需要支持多国语言,多国语言采用的ini方式,而不是dll资源切换。
下面是在MFC 动态修改ToolTip
重载主框架的虚函数GetMessageString
//修改 \n 前的部分.即 " 打开文档\n打开 " 中的 "打开文档" 串
void CMainFrame::GetMessageString(UINT nID, CString& rMessage) const
{
// TODO: 在此添加专用代码和/或调用基类
switch (nID)
{
case ID_FILE_OPEN: //Menu或ToolBar
rMessage = _T("Open Document");
return;
default:
break;
}
CMDIFrameWndEx::GetMessageString(nID, rMessage);
CString str;
str.LoadString(AFX_IDS_IDLEMESSAGE);
if (str == rMessage)
{
rMessage = _T("Ready");
return;
}
str.LoadString(ID_FILE_MRU_FILE1);
if (str == rMessage)
{
rMessage = _T("Open the document");
return;
}
}
继承CMFCToolBar为CMyToolBar ,
在MainFrm.h 把类替换成CMyToolBar
protected: // 控件条嵌入成员
CMFCMenuBar m_wndMenuBar;
CMyToolBar m_wndToolBar;
重载CMyToolBar 函数
//CMyToolBar 消息处理程序//修改 \n 后的部分.即 " 打开文档\n打开 " 中的 "打开" 串
BOOL CMyToolBar::OnUserToolTip(CMFCToolBarButton* pButton, CString& strTTText) const
{
ASSERT_VALID(pButton);
switch (pButton->m_nID)
{
case ID_FILE_OPEN:
strTTText = _T("Open");
return TRUE;
default:
break;
}
return FALSE;
}
参考 http://blog.csdn.net/xiaohuh421/article/details/7683351