vc在点击保存文件的时候会发出什么消息啊?

jiawenzhi78 2008-09-27 04:11:32
如题
...全文
197 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiawenzhi78 2008-09-28
  • 打赏
  • 举报
回复
怎么用spy++过滤消息啊?
不会用spy++
Occam's_Razor 2008-09-28
  • 打赏
  • 举报
回复
用spy++过滤一下消息看看
Red_angelX 2008-09-28
  • 打赏
  • 举报
回复
那就不知道了 别的控件内部实现机制不一样,很可能是一些自定义的消息
jameshooo 2008-09-28
  • 打赏
  • 举报
回复
那就做VS的插件,由插件来禁用保存命令,前提还是要用COM
jiawenzhi78 2008-09-28
  • 打赏
  • 举报
回复
差距太大
看不懂。。
jameshooo 2008-09-28
  • 打赏
  • 举报
回复
VC是一个活动文档容器,菜单工具栏的命令消息都要转换成对活动文档的COM调用,最终会调用IOleCommandTarget::Exec(),当然菜单和工具栏内部也是COM组件,活动文档可以通过COM方式动态修改。
jiawenzhi78 2008-09-28
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 nooning 的回复:]
像这样的情况 HOOK NtOpenFile 从根本解决
[/Quote]
大侠能说明一下吗
nooning 2008-09-28
  • 打赏
  • 举报
回复
像这样的情况 HOOK NtOpenFile 从根本解决
cnzdgs 2008-09-28
  • 打赏
  • 举报
回复
这要看菜单部分具体是怎么设计的,可能两种方法都可以,也可能某一种可以或者都不行。
响应WM_INITMENUPOPUP消息可以直接用VC添加,在OnInitMenuPopup函数中,nIndex参数表示子菜单序号(从0开始),用以下方法禁用该子菜单中的菜单项:
pPopupMenu->EnableMenuItem(ID, MF_DISABLED|MF_GRAYED);
或者
pPopupMenu->EnableMenuItem(菜单项索引, MF_BYPOSITION|MF_DISABLED|MF_GRAYED);
jiawenzhi78 2008-09-28
  • 打赏
  • 举报
回复
用插件形式加进去的,ON_UPDATE_COMMAND_UI(菜单项ID, &类名::响应函数名) 这样子应该不行吧?
以前你也来回答过我这个问题的
我就是不知道怎么来响应WM_INITMENUPOPUP消息,调用EnableMenuItem。
cnzdgs 2008-09-28
  • 打赏
  • 举报
回复
可以先试试,在BEGIN_MESSAGE_MAP下面添加:
ON_UPDATE_COMMAND_UI(菜单项ID, &类名::响应函数名)

void 类名::响应函数名(CCmdUI *pCmdUI)
{
pCmdUI->Enable(FALSE);
}
如果不行,再试试响应WM_INITMENUPOPUP消息,调用EnableMenuItem。
jiawenzhi78 2008-09-28
  • 打赏
  • 举报
回复
谢谢5楼
我自己捣鼓了一下spy++
我点“保存”的时候是有WM_COMMAND 和WM_INITMENU,WM_INITMENUPOPUP的消息出现的。
这是不是说solidworks就是用的MFC框架呢?
那我想把“保存”菜单弄灰掉需要怎么操作?
最好贴段代码说明一下哦
我给帖子多加点分
jiawenzhi78 2008-09-27
  • 打赏
  • 举报
回复
我用的是solidworks,他的菜单好像都是用com技术加进去的。
这样子的话,我该怎么去拦截它的消息呢?
qrlvls 2008-09-27
  • 打赏
  • 举报
回复
同楼上,当然仅适用于MFC的视图框架结构
cnzdgs 2008-09-27
  • 打赏
  • 举报
回复
WM_COMMAND消息,ID默认是ID_FILE_SAVE。

15,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧