函数指针数组的一个问题typedef struct _MESSAGE_MAP_ENTRY{UINT messageLRESULT (CMainFrame::*pFunc)(W
函数指针数组的一个问题
typedef struct _MESSAGE_MAP_ENTRY
{
UINT message;
LRESULT (CMainFrame::*pFunc)(WPARAM, LPARAM);
}MESSAGE_MAP_ENTRY, *PMESSAGE_MAP_ENTRY;
LRESULTCMainFrame::DispatchWindowMessage(UINT message, WPARAM wParam, LPARAM lParam)
{
static const MESSAGE_MAP_ENTRY MessageMap[] =
{
WM_COMMAND, OnCommand,
WM_PAINT, OnPaint,
WM_DESTROY, OnDestroy
};
static int M = ARRAYSIZE(MessageMap);
for (int i = 0; i < M; i++)
{
if (MessageMap[i].message == message)
{
return (*(MessageMap[i].pFunc))(wParam, lParam); // ???
}
}
return ::DefWindowProc(m_hWnd, message, wParam, lParam);
}
有问号的一行,我试了好几种书写方法,编译器总是报错
这种情况,应该怎么调函数? Windows?Mobile
[解决办法]
(this->*(MessageMap[i].pFunc))(wParam, lParam);
[解决办法]
唉,你C++的基础都还没过关,就去搞MFC.......
OnDestroy是一个成员函数,成员函数与常规函数不一样,是没有从函数到指针的转换的,原因是成员函数的左值不可获得,所以不能直接使用CMainFrame::OnDestroy,得加上&操作符。
