首页
社区
课程
招聘
[求助]MFC消息的处理
发表于: 2009-5-18 10:56 4047

[求助]MFC消息的处理

2009-5-18 10:56
4047
MFC框架里
union MessageMapFunctions
{
        AFX_PMSG pfn;

        void (CWnd::*pfn_vv)(void);
        void (CWnd::*pfn_vw)(UINT);
        int (CWnd::*pfn_is)(LPTSTR);
};
处理消息时
        const AFX_MSGMAP* pMessageMap;
        const AFX_MSGMAP_ENTRY* lpEntry;
        for(pMessageMap = GetMessageMap(); pMessageMap != NULL; pMessageMap = pMessageMap->pBaseMap)
        {
                ASSERT(pMessageMap != pMessageMap->pBaseMap);
                if((lpEntry = AfxFindMessageEntry(pMessageMap->pEntries, message, 0, 0)) != NULL)
                                goto LDispatch;
        }
        return FALSE;

LDispatch:
        union MessageMapFunctions mmf;
        mmf.pfn = lpEntry->pfn;
        switch(lpEntry->nSig)
        {
        default:
                return FALSE;
        case AfxSig_vw:
                (this->*mmf.pfn_vw)(wParam);
        //        ((*mmf.pfn_vw))(wParam);这样不行
                break;
为什么我去掉this->后不行了呢?编译错误error C2171: '*' : illegal on operands of type 'void (__thiscall CWnd::*)(unsigned int)'
: error C2064: term does not evaluate to a function
哪位仁兄请指点下小弟

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 40
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
.的优先级比*更高

((*mmf).pfn_vw)(wParam);
2009-5-18 17:23
0
雪    币: 354
活跃值: (157)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
3
[QUOTE=skyxskyx;626428].的优先级比*更高

这我知道啊,我照你这么改后编译错误,
COMMON\WINCORE.CPP(483) : error C2100: illegal indirection
COMMON\WINCORE.CPP(483) : error C2064: term does not evaluate to a function

我觉得应该是先提取mmf.pfn_vw,再用*提取内容。可这样也不对,真是很晕。
2009-5-19 14:29
0
雪    币: 39
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
"->*" 注意引号内是一个运算符,C没有只有C++才有, 你为什要把这个this去掉呢? 这个本来是说调用一个成员函数(调用方式是使用成员函数指针),你去掉this当然就不对了.
2009-5-19 14:57
0
雪    币: 354
活跃值: (157)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
5
太感谢你了,我C++自学的,我只知道函数指针,不知道还有成员函数指针这东西,更不知道调用法则,我看了这篇文章后明白了。(http://dev.csdn.net/article/30/30130.shtm)
谢谢你!
2009-5-19 15:15
0
雪    币: 86
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
this指向目前类实例的地址
2009-5-19 15:24
0
游客
登录 | 注册 方可回帖
返回
//