| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1532 人关注过本帖
标题:mfc自定义消息问题
只看楼主 加入收藏
朦朦胧胧
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2006-9-19
收藏
 问题点数:0 回复次数:4 
mfc自定义消息问题

我在afxstd.h中定义消息:#define WM_COMPILE WM_USER+1

在CMainFrm中某个按钮的响应函数写上:PostMessage(WM_COMPILE);

在CXXXView类的头文件中加上红色的部分:
// Generated message map functions
protected:
//{{AFX_MSG(CLeftView)
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnClick(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
//}}AFX_MSG
afx_msg void OnCompile();
DECLARE_MESSAGE_MAP()

在CXXXView类的cpp文件中加上红色的部分
BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)
//{{AFX_MSG_MAP(CMainFrame)
ON_WM_CREATE()
ON_COMMAND(ID_BUTTON32771, OnButton32771)
//}}AFX_MSG_MAP
ON_MESSAGE(WM_COMPILE,OnCompile)
END_MESSAGE_MAP()

方法OnCompile定义如下:

void CXXXView::OnCompile(){
CDC* pDC=GetDC();
pDC->TextOut(0,0,"gggggggggg");

}

编译运行,点击那个按钮,可是view没有任何反映,不显示,"gggggggggg",设置断点,go一下才知道

CXXXView根本没有响应消息WM_COMPILE,但是在CXXXView类里的鼠标单击响应函数中发送该消息,则

OnCompile可以响应。不知是什么原因,请知道的赐教,不胜感激!

搜索更多相关主题的帖子: 定义消息 mfc void msg afx 
2006-12-11 20:35
走刀口→超
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:5018
专家分:0
注 册:2006-3-14
收藏
得分:0 
这个按扭的响应函数是这么加的么?

我用的是菜单上的创建向导类好象。呵呵。忘了。。。

人在江湖【走】,怎能不挨【刀】;为了能活【口】,唯有把己【超】!come on...
2006-12-11 20:38
走刀口→超
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:5018
专家分:0
注 册:2006-3-14
收藏
得分:0 
OK。我试了一下。很开心我的机器上有C++。我把我是怎么添加的说一边。

在书上看来的。新建MFC那个EXE的。

然后在IDR_MAINFRAME里面修改菜单。添加一个项,再加一个子菜单。可以按的那个。我个它定义了ID_SEE

然后Ctrl+w。在CLASSNAME里选CXXXView,在object ids里面找到ID_SEE这个。选中!

再MESSAGE里面选COMMAND,然后ADD FUNCTION。(定义好名字,我没改)

再去视图类里面找到CXXXXView::OnSee()添加代码
CDC* pDC=GetDC();
pDC->TextOut(0,0,"gggggggggg");
然后运行。再点那个菜单就OK了。不知道这个符合不符合LZ的要求咧?

人在江湖【走】,怎能不挨【刀】;为了能活【口】,唯有把己【超】!come on...
2006-12-11 20:54
朦朦胧胧
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2006-9-19
收藏
得分:0 
以下是引用走刀口→超在2006-12-11 20:54:04的发言:
OK。我试了一下。很开心我的机器上有C++。我把我是怎么添加的说一边。

在书上看来的。新建MFC那个EXE的。

然后在IDR_MAINFRAME里面修改菜单。添加一个项,再加一个子菜单。可以按的那个。我个它定义了ID_SEE

然后Ctrl+w。在CLASSNAME里选CXXXView,在object ids里面找到ID_SEE这个。选中!

再MESSAGE里面选COMMAND,然后ADD FUNCTION。(定义好名字,我没改)

再去视图类里面找到CXXXXView::OnSee()添加代码
CDC* pDC=GetDC();
pDC->TextOut(0,0,"gggggggggg");
然后运行。再点那个菜单就OK了。不知道这个符合不符合LZ的要求咧?

不符合。我的重点是CXXXView里的函数OnCompile为什么不能响应在CMainFrm里发送的消息WM_COMPILE;
但是把OnCompile改成CMainFrm里的函数,就能正常响应


2006-12-11 21:40
走刀口→超
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:5018
专家分:0
注 册:2006-3-14
收藏
得分:0 
饿。今天无能为力了呀。看看别人的吧。。。

人在江湖【走】,怎能不挨【刀】;为了能活【口】,唯有把己【超】!come on...
2006-12-11 21:45
快速回复:mfc自定义消息问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014680 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved