菜单的一个小问题

zjfhgdx 2009-08-14 01:36:52
写了一个SDI应用程序.
添加了一个菜单.
请问题这个菜单的命令处理程序应该写在哪里,
DOC类中还是VIEW中.还是两个都可以写?

我昨天写在VIEW中报错,写DOC中编译通过.
只好把VIEW中的一个变量拿到了DOC中,因为这个菜单的作用就是改变那个变量的值.
...全文
89 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
jaeson83 2009-08-14
  • 打赏
  • 举报
回复
写在Frame或者View里面都可以。系统先响应frame里面的事件,然后响应view。可以看看孙鑫的教程,里面很详细地介绍了frame,view,doc之间的响应先后顺序。
zjfhgdx 2009-08-14
  • 打赏
  • 举报
回复
THANKS
allright1199 2009-08-14
  • 打赏
  • 举报
回复
响应函数顺序frame,doc,view,如果前面有了后面就不做了

Frame获取View成员
CDocument *pDoc =(((CFrameWnd*)AfxGetMainWnd())->GetActiveFrame())->GetActiveDocument();
CView *pView;
POSITION pos = pDoc->GetFirstViewPosition();
pView = pDoc->GetNextView(pos);

这是取激活文档的第一个view的,可以用于一般情况下,你可以根据自己的情况做修改
zjfhgdx 2009-08-14
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 tttyd 的回复:]
引用 7 楼 zjfhgdx 的回复:
引用 2 楼 tttyd 的回复:
1。 写了一个SDI应用程序.
    添加了一个菜单.
  请问题这个菜单的命令处理程序应该写在哪里,
  DOC类中还是VIEW中.还是两个都可以写?

都可以

2.  我昨天写在VIEW中报错,写DOC中编译通过.
    只好把VIEW中的一个变量拿到了DOC中,因为这个菜单的作用就是改变那个变量的值.
你是怎么添加菜单响应函数的?使用Ctrl+W向导为你添加消息响应函数


请问如果VIEW和DOC中都写了这个菜单的处理程序,那他是如何执行的?

先查找Doc类中有无响应函数,如有调用Doc的响应函数。如果没有,然后找找view类有无响应函数,如果调用View的响应函数
[/Quote]
也就是说他只执行一个函数对吗?如果,DOC中有,就不会再执行VIEW中的了?
雪影 2009-08-14
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 zjfhgdx 的回复:]
引用 2 楼 tttyd 的回复:
1。 写了一个SDI应用程序.
    添加了一个菜单.
  请问题这个菜单的命令处理程序应该写在哪里,
  DOC类中还是VIEW中.还是两个都可以写?

都可以

2.  我昨天写在VIEW中报错,写DOC中编译通过.
    只好把VIEW中的一个变量拿到了DOC中,因为这个菜单的作用就是改变那个变量的值.
你是怎么添加菜单响应函数的?使用Ctrl+W向导为你添加消息响应函数


请问如果VIEW和DOC中都写了这个菜单的处理程序,那他是如何执行的?
[/Quote]
先查找Doc类中有无响应函数,如有调用Doc的响应函数。如果没有,然后找找view类有无响应函数,如果调用View的响应函数
yswlqj 2009-08-14
  • 打赏
  • 举报
回复
我一般会放在View里,应为大多数的操作在View里,如果设置在MainFrame里边,比如View里的一个变量变了,你需要在这On**里做处理,但是这个东西在MainFrame里,你要么就要把这个变量的指针传过去,要么就是弄一个全局变量,很麻烦,所以不如直接弄在View里,我没试过放在两个里会怎么样,这个……好像会有冲突吧。不太清楚。放哪里是无所谓的,关键是你要用来做什么,还有怎么处理方便
zjfhgdx 2009-08-14
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 tttyd 的回复:]
1。 写了一个SDI应用程序.
    添加了一个菜单.
  请问题这个菜单的命令处理程序应该写在哪里,
  DOC类中还是VIEW中.还是两个都可以写?

都可以

2.  我昨天写在VIEW中报错,写DOC中编译通过.
    只好把VIEW中的一个变量拿到了DOC中,因为这个菜单的作用就是改变那个变量的值.
你是怎么添加菜单响应函数的?使用Ctrl+W向导为你添加消息响应函数
[/Quote]

请问如果VIEW和DOC中都写了这个菜单的处理程序,那他是如何执行的?
zjfhgdx 2009-08-14
  • 打赏
  • 举报
回复
请问把程序写在FRAME里面如何修改VIEW中的数据成员?
leechard 2009-08-14
  • 打赏
  • 举报
回复
Document,View,Frame应该都可以,我在document和frame中试过,肯定可以的。view没有用过。
janyming 2009-08-14
  • 打赏
  • 举报
回复
写FRANE里,你的菜单的PARENT是那个就写那个上面
numen27 2009-08-14
  • 打赏
  • 举报
回复
写在Document,View,Frame里面都可以的吧,我习惯写在Frame里面。
雪影 2009-08-14
  • 打赏
  • 举报
回复
1。 写了一个SDI应用程序.
添加了一个菜单.
请问题这个菜单的命令处理程序应该写在哪里,
DOC类中还是VIEW中.还是两个都可以写?

都可以

2. 我昨天写在VIEW中报错,写DOC中编译通过.
只好把VIEW中的一个变量拿到了DOC中,因为这个菜单的作用就是改变那个变量的值.
你是怎么添加菜单响应函数的?使用Ctrl+W向导为你添加消息响应函数
njlengjiang 2009-08-14
  • 打赏
  • 举报
回复
帮你顶下,MFC初学者,目前都是在Dialog中进行开发的,爱莫能助.

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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