详细见:http://bbs.csdn.net/topics/390634123
问题:
如上图,MFC菜单栏使用其默认菜单“最近打开”,然而如果路径长度较长,其显示不全 会以\...\省略号代替,
而且鼠标移动到上面也没有弹出提示,不像工具栏,可以提示。
现在需要:鼠标移动上面,弹出提示信息;或者在任务栏(最下面)弹出提示信息。或者直接给出全部路径吧。
求高手指导,MFC里面哪一块可以添加代码得到以上需求。
PS:VS2010环境
然后有两个同学回复了,没实质帮助,却在交流中不断地让我自己想办法解决。
最后我的回复:(论坛管理自己回复不能超过3次,那我怎么跟人家交流啊!!!Bug)
解铃还须系铃人啊。没有老鸟帮忙,只能菜鸟慢慢飞了。
在C*App里LoadStdProfileSettings(4)函数包括了MFC给的最近打开菜单等内容。不好修改其内部实现方法。比较简单的做法是,不用LoadStdProfileSetting
而是直接把其函数内部实现的过程,自己做一下。其内部函数为(不完全)
{
const TCHAR myFileSection[] = _T("Recent File List");
const TCHAR myFileEntry[] = _T("File%d");
const TCHAR myPreviewSection[] = _T("Settings");
const TCHAR myPreviewEntry[] = _T("PreviewPages");
ASSERT_VALID(this);
ASSERT(m_pRecentFileList == NULL);
int nMaxMRU=8;
BOOL bNoRecentDocs = FALSE;
GetSysPolicyValue(_AFX_SYSPOLICY_NORECENTDOCHISTORY, &bNoRecentDocs);
if (nMaxMRU != 0 && !bNoRecentDocs )
{
// create file MRU since nMaxMRU not zero
[color=#FF0000]m_pRecentFileList = new CRecentFileList(0, myFileSection, myFileEntry,
nMaxMRU);[/color]
m_pRecentFileList->ReadList();
}
// 0 by default means not set
m_nNumPreviewPages = GetProfileInt(myPreviewSection, myPreviewEntry, 0);
}
红色字体部分就是我需要的东西了,该构造函数的最后一个参数是默认的,所以仅仅做了一下修改
[color=#FF0000]m_pRecentFileList = new CRecentFileList(0, myFileSection, myFileEntry,nMaxMRU,60);[/color]这样将原来的菜单最大宽度的上限提高到60个字符,也可以更大,根据需要了。终于结贴。