VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 818|回复: 5

[已解决] 问题是如何设置菜单栏中的RecentFiles?

[复制链接]
30_avatar_middle
在线会员 望蓝天 发表于 2017-8-23 21:57:32 | 显示全部楼层 |阅读模式
本帖最后由 望蓝天 于 2017-9-15 12:23 编辑

这个问题困扰了很久,虽然可以不做,但是问题放在那里很蓝瘦。
主要目的是想在RecentFiles中显示文件全路径(因为可以提前判断打开的文件是什么)

现在调用LoadStdProfileSettings(4);显示4条记录

百度了很久,感觉没有找到解决方法。有一种方法可以变相的显示内容,自认为挺有效的,但是就是实现不了。
就是用WindowProc()捕获WM_MENUSELECT消息,根据选择的菜单栏在别的地方显示完整路径。但是就是捕获不到这个消息,我也不知道为什么,可能某个细节知识没有认识到。

说了这么多,只是想说,我渴望帮助,希望有大佬指点指点。

不管是在菜单栏中显示完整路径,还是在别的地方(可能是状态栏)显示都是扣以的嘛。





上一篇:有关C++的类成员指针的一点小疑问
下一篇:请问下只知道商,不知道余数情况下 这样加解密可以得到被乘数

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

51_avatar_middle
online_admins Syc 发表于 2017-8-23 23:06:11 | 显示全部楼层
找到了一个解决方案,应该可以解决楼主的问题,至于楼主说的用WindowProc()捕获WM_MENUSELECT消息,根据选择的菜单栏在别的地方显示完整路径。感觉还是旁门左道,不太合适。可以试试我下面找到的这个方法:

显示最近文件列表菜单项中的完整路径文件名称

作者:Pablo Presedo
ppresedo@hotmail.com
最近,有人发电子邮件问我如何用MFC应用程序得到最近打开过文件列表中的完整路径和文件名称。 仅当当前的目录不同于文件定位的目录时,缺省行为是显示完整路径。如果太长,将简写路径名称。

在最近的文件列表中被显示的文件名由CRecentFileList::GetDisplayName函数建立。此函数由CRecentFileList::UpdateMenu呼叫,它被CWinApp::On- UpdateRecentFileMenu函数呼叫,CWinApp::OnUpdateRecentFileMenu函数被呼叫以响应更新命令。

ON_UPDATE_COMMAND_UI(ID_FILE_MRU_FILE1, OnUpdateRecentFileMenu) appcore.cpp中信息映射入口。

  1. void CWinApp::OnUpdateRecentFileMenu(CCmdUI*pCmdUI)
  2. {
  3.     ASSERT_VALID(this);
  4.     if (m_pRecentFileList == NULL)      
  5.     // no MRU files
  6.     //没有MRU 文件
  7.        pCmdUI->Enable(FALSE);
  8.     else
  9.        // ***This function will call GetDisplayName. ***
  10.        // ***此函数将呼叫GetDisplayName ***

  11.        m_pRecentFileList->UpdateMenu(pCmdUI);  
  12. }
复制代码


对于这问题的一种解决方案是在派生自InitInstance的CWinApp中的LoadStdProfileSettings调用之后删除CRecentFileList* m_pRecentFileList。我们以一个我们自己派生自CRecentFileList的类替换它(列表6 )。 我们的CRecentFileList将重载(override) GetDisplayName函数。确使CRecentFileList 派生类构造器参数nSize设置到LoadStdProfileSettings的参数nMaxMRU。 那就它的全部。 在这个月的代码档案文件中,我已包括显示这个演示例子,以及一个如何用一个MFC对话应用程序显示一个最近的文件列表的例子,还有。 缺省情况下,MFC对话应用程序不支持最近的文件列表。

评分

参与人数 1驿站币 +1 热心值 +1 收起 理由
30_avatar_small 望蓝天 + 1 + 1 很给力!

查看全部评分

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 1 反对 0

使用道具 举报

30_avatar_middle
ico_lz  楼主| 望蓝天 发表于 2017-8-24 07:48:20 | 显示全部楼层
Syc 发表于 2017-8-23 23:06
找到了一个解决方案,应该可以解决楼主的问题,至于楼主说的用WindowProc()捕获WM_MENUSELECT消息,根据 ...

我今天会去尝试下这个方法,尝试完来回复,谢谢大佬赐教!!!

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

30_avatar_middle
ico_lz  楼主| 望蓝天 发表于 2017-8-24 13:18:59 | 显示全部楼层
Syc 发表于 2017-8-23 23:06
找到了一个解决方案,应该可以解决楼主的问题,至于楼主说的用WindowProc()捕获WM_MENUSELECT消息,根据 ...

上午试了试,并不知道如何用自己的派生的指针,去替换原先的指针。也不知道如何删除原先的指针,想着原先的指针如果是动态创建的,应该delete什么的问题。想想还是先把这个问题放一边,谢谢大佬的帮忙。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

30_avatar_middle
ico_lz  楼主| 望蓝天 发表于 2017-9-15 12:17:48 | 显示全部楼层

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2018-12-14 14:54

Powered by Discuz! X3.4

© 2009-2018 cctry.com

快速回复 返回顶部 返回列表