如何从CMenu继承一个MFC类??Insert -> New Class, 基类中没有CMenu!

uoyevoli 2004-04-05 11:01:52
我想从CMenu继承一个MFC类,之所以不用Generic Class 是因为我想使用Class Wizard,主要是想使用Message Reflection来把WM_DRAWITEM等消息放到这个类中进行处理,不想放在父窗口中处理。

但是Insert -> New Class,基类中没有CMenu(其实这里可选的类非常少)不知道是为什么???

怎么办????
...全文
633 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
pomelowu 2004-04-08
  • 打赏
  • 举报
回复
恐怕不行,没有messageMap成员,宏BEGIN_MESSAGE_MAP(class,baseclass)都不能使用,如何进行消息反射?或者也有高手知道如何解决,一起学习了。
uoyevoli 2004-04-08
  • 打赏
  • 举报
回复
在国外论坛的到的答案也是message reflection只能用于CWnd的继承类。

晕,看来我只能放弃了。
uoyevoli 2004-04-07
  • 打赏
  • 举报
回复
能手工添加吗?
主要是Message Reflection!即消息反射!就是把WM_DRAWITEM WM_MEASUREITEM消息放到该类内部处理。
uoyevoli 2004-04-06
  • 打赏
  • 举报
回复
怎么写?能给点例子吗?
薛定谔之死猫 2004-04-06
  • 打赏
  • 举报
回复
自己用手写啊,一样的
xuyun11141 2004-04-06
  • 打赏
  • 举报
回复
先从一个类里派生后,然后在在.H和.CPP将基类改在CMenu就行了
pomelowu 2004-04-06
  • 打赏
  • 举报
回复
在头文件类申明的最后加上
DECLARE_DYNAMIC(CMyClass)
在实现类的cpp文件的预编译后加上
IMPLEMENT_DYNAMIC(CMyClass, CMenu)
garygao 2004-04-06
  • 打赏
  • 举报
回复
象 bjyst2008(追风) 说的,常见新类时选择generic class,然后在derived from内填上CMenu就行
bjyst2008 2004-04-06
  • 打赏
  • 举报
回复
你在创建新类是不要选择mfc class 而是选择generic class
pomelowu 2004-04-06
  • 打赏
  • 举报
回复
原因在于 DECLARE_MESSAGE_MAP()
CMenu类并没有messageMap成员,也就是说,就算你改写了这个类,也没有办法通过class wizard给你的类添加消息映射和消息响应
uoyevoli 2004-04-06
  • 打赏
  • 举报
回复
顶啊,再线等!!
uoyevoli 2004-04-06
  • 打赏
  • 举报
回复
可能我的帖子没有说清楚,我之所以不选Generic Class是因为我想利用Class Wizard来添加CMyClass的Message Reflection来在该类内部处理WM_DRAWITEM WM_MEASUREITEM消息而不是把该消息发给父窗口处理。便于该类移植到其他工程中。而Generic Class是无法使用Class Wizard的,我自己有不会手工添加Message Reflection代码。

说白了,我就是想实现 “自画菜单” 而我从Codeproject下载的源码都是在菜单的父窗口中处理那两个消息的,不便于移植,我想用Messag Reflection来改造它。

我看MSDN TN062: Message Reflection for Windows Controls
里面的例子是通过Classs Wizard来添加 =WM_CTLCOLOR 反射消息的。没有提到如何手工添加。
uoyevoli 2004-04-05
  • 打赏
  • 举报
回复
帮忙啊!!应该是个简单问题吧??
在线等啊!!
uoyevoli 2004-04-05
  • 打赏
  • 举报
回复
是啊,我在书上看的也是这么说的,但我觉得这个办法只对从CWnd继承的类有用。
因为我从CStatic(其他什么都一样的)继承,然后手工改动CStatic为CMenu,但编译出错!!

error C2039: 'messageMap' : is not a member of 'CMenu'

我的源文件如下:(手工改动后的)
#if !defined(AFX_MYCLASS_H__E145A8E1_874D_11D8_8D5E_E44DA39E591C__INCLUDED_)
.....
// MyClass.h : header file
/////////////////////////////////////////////////////////////////////////////
// CMyClass window
class CMyClass : public CMenu
{
// Construction
public:
CMyClass();
// Attributes
public:
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CMyClass)
//}}AFX_VIRTUAL
// Implementation
public:
virtual ~CMyClass();
// Generated message map functions
protected:
//{{AFX_MSG(CMyClass)
// NOTE - the ClassWizard will add and remove member functions here.
//}}AFX_MSG

DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_MYCLASS_H__E145A8E1_874D_11D8_8D5E_E44DA39E591C__INCLUDED_)

**************************************
// MyClass.cpp : implementation file
//
#include "stdafx.h"
.......
/////////////////////////////////////////////////////////////////////////////
// CMyClass
CMyClass::CMyClass()
{
}
CMyClass::~CMyClass()
{
}
BEGIN_MESSAGE_MAP(CMyClass, CMenu)
//{{AFX_MSG_MAP(CMyClass)
// NOTE - the ClassWizard will add and remove mapping macros here.
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMyClass message handlers
itmaster 2004-04-05
  • 打赏
  • 举报
回复
先继承一个类
然后手工改写
dawndu 2004-04-05
  • 打赏
  • 举报
回复
先写一个其他类,然后替换它
bm1408 2004-04-05
  • 打赏
  • 举报
回复
的确是没有这个类!

只能通过动态的创建!
【更新至2025年】2001-2025年上市公司数字化转型年报词频统计(吴非、赵宸宇、甄红线)(300+年报词频统计) 1、时间:2001-2025年 2、来源:上市公司年报 3、参考文献:企业数字化转型与资本市场表现——来自股票流动性的经验证据(吴非) 数字化转型如何影响企业全要素生产率(赵宸宇) 知识产权行政保护与企业数字化转型(甄红线) 4、方法说明:(1)参考吴非老师的做法,对人工智能技术、大数据技术、云计算技术、区块链技术、数字技术运用五个维度76个数字化相关词频进行统计 (2)参考赵宸宇老师的做法,对数字技术应用、互联网商业模式、智能制造、现代信息系统四个维度99个数字化相关词频进行统计 (3)参考甄红线老师的做法,对技术分、组织赋能、数字化应用等别下139个数字化相关词频进行统计 5、指标:年份、股票代码、公司简称、行业名称、行业代码、全文-文本总长度、仅英文-文本总长度、人工智能技术-吴、大数据技术-吴、云计算技术-吴、区块链技术-吴、数字技术运用-吴、数字技术应用-赵、互联网商业模式-赵、智能制造-赵、现代信息系统-赵、技术分-人工智能技术-甄、技术分-区块链技术-甄、技术分-云计算技术-甄、技术分-大数据技术-甄、组织赋能-人工智能技术-甄、组织赋能-云计算技术-甄、组织赋能-大数据技术-甄、组织赋能-广义数字技术-甄、数字化应用-技术创新-甄、数字化应用-流程创新-甄、数字化应用-业务创新-甄、人工智能、商业智能、图像理解、投资决策辅助系统、智能数据分析、智能机器人、机器学习、深度学习、语义搜索、生物识别技术、人脸识别、语音识别、身份验证、自动驾驶、自然语言处理、大数据、数据挖掘、文本挖掘、数据可视化、异构数据、征信、增强现实、混合现实、虚拟现实、云计算、流计算、图计算、内存计算、多方安全计算、脑计算、绿色计算、认知计算等300+词频

16,550

社区成员

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

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

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