判断message于0xC000的大小关系有什么用?union MessageMapFunctions mmf;
mmf.pfn=lpEntry->pfn;
//这里不是已经将消息处理函数赋值了吗?为何下面的返回值是另外一个函数?
switch (lpEntry->nSig)
case AfxSig_is:
lResult=(this->*mmf.pfn_is)(.......);
break;
case AfxSig_lwl:
lResult=(this->*mmf.pfn_lwl)(......);
break;
.........mmf.pfn_is mmf.pfn_lwl等等这类函数是什么?
望前辈解答,不慎感激,定当结账。
mmf.pfn=lpEntry->pfn;
//这里不是已经将消息处理函数赋值了吗?为何下面的返回值是另外一个函数?
switch (lpEntry->nSig)
case AfxSig_is:
lResult=(this->*mmf.pfn_is)(.......);
break;
case AfxSig_lwl:
lResult=(this->*mmf.pfn_lwl)(......);
break;
.........mmf.pfn_is mmf.pfn_lwl等等这类函数是什么?
望前辈解答,不慎感激,定当结账。
大概是这样子,pfn_lwl 表示有3个参数(或者两个参数一个返回值?),其类型依次为long, word, long。(这只是个大意,准确的信息还得看原码。)
pfn是普通指针,接受任何函数指针类型,用于向该union付值。
而pfn_is, pfn_lwl则是该指针可能的函数原型(指针)。简单地说,就是先把函数指针传给万能的pfn。然后根据函数的类型,用合适的函数原型调用该函数指针:pfn_is,pfn_lwl......