mfc中在mainfrm.cpp开始处加入#include"CMyview.h"(假设工程名为My),为什么错误.

我想在框架文件中添加WM_TIMER消息,并实现自定义消息ON_MESSAGE(WM_MYMESAGE,OnMymessage)//WM_MYMESSAGE为自定义消息.... 我想在框架文件中添加WM_TIMER消息,并实现自定义消息
ON_MESSAGE(WM_MYMESAGE,OnMymessage)//WM_MYMESSAGE为自定义消息.

void CMainFrame::OnTimer(UINT nIDEvent)
{
GetActiveView()->SendMessage(WM_MYMESSAGE);//由视图显示结果.
}

本来可以直接在视图派生类中实现上面的功能,但我想在框架类中实现.
知道的朋友,请解说一下.
谢谢!
更正一下void CMainFrame::OnTimer(UINT nIDEvent) 函数
void CMainFrame::OnTimer(UINT nIDEvent)
{
((CMyView*)GetActiveView())->SendMessage(WM_MYMESSAGE);//由视图显示结果.
}
展开
 我来答
hbjzzt
2009-04-01 · TA获得超过476个赞
知道小有建树答主
回答量:245
采纳率:0%
帮助的人:273万
展开全部
GetActiveView()->SendMessage(WM_MYMESSAGE);
在vc6.0下,直接使用就可以了。
如果在vc2005下出错,是由于框架应用程序类生成应用程序时构造的时间是不一样造成的。

在mainfrm.cpp里加
#include "MyDoc.h"
#include "MyView.h"

添加到系统生成的应用头文件的后面,并且这2句顺序不能换。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
何处淬吴钩
2009-04-01 · TA获得超过5045个赞
知道大有可为答主
回答量:2947
采纳率:50%
帮助的人:2417万
展开全部
SendMessage()有sdk函数,也有作为CWnd的方法。你所说的情况没必要强制转换成你的view类指针(因为转换与否SendMessage没本质区别,如果你没重新定义SendMessage()函数的话),除非需要使用你自己在View类中定义的方法才有必要转换。

另外,如果你未对自动生成的各头文件名进行改动,你的#include"头文件"是错误的,头文件名开头没有大写的字母C。应该是#include"Myview.h"

最后,如果你的SetTimer是在构造函数中建立,那么请保证使用GetActiveView()函数时View已经创建,然后再使用。建议不要在构造函数中SetTimer.

至于你说的错误,描述不够清楚,所以不知道你说的错误到底是什么。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
stone_dongdong
2009-04-01 · TA获得超过2853个赞
知道大有可为答主
回答量:1636
采纳率:0%
帮助的人:1028万
展开全部
要不要 #include"CMyview.h" 并没关系。
GetActiveView()->SendMessage(WM_MYMESSAGE); // 就可以了
消息处理是一个数组表格查找,类似与虚函数。

ON_MESSAGE(WM_MYMESAGE,OnMymessage)
这句话应该定义在 CMyView的实现里面。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
载黛秋夜春
2019-04-26 · TA获得超过1299个赞
知道小有建树答主
回答量:1895
采纳率:100%
帮助的人:8.8万
展开全部
既然使用了GetActiveView还#include"CMyview.h"干嘛???
再看看别人怎么说的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小趴皮
2009-04-01 · 超过34用户采纳过TA的回答
知道答主
回答量:123
采纳率:0%
帮助的人:0
展开全部
既然使用了GetActiveView还#include"CMyview.h"干嘛???
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式