BEGIN_MSG_MAP_EX(CMyWindow)
......
MSG_WM_TIMER(OnTimer)
......
END_MSG_MAP()
void OnTimer(UINT nIDEvent, TIMERPROC lpTimerFunc)
{
if ( 1 != nIDEvent )
SetMsgHandled(false);
else
RedrawWindow();
}
错误:C2660: “CMyWindow::OnTimer” : 函数不接受 1 个参数
看了一下WTL8.0 对MSG_WM_TIMER的宏定义
// void OnTimer(UINT_PTR nIDEvent)
#define MSG_WM_TIMER(func) /
if (uMsg == WM_TIMER) /
{ /
SetMsgHandled(TRUE); /
func((UINT_PTR)wParam); /
lResult = 0; /
if(IsMsgHandled()) /
return TRUE; /
}
把void OnTimer(UINT nIDEvent, TIMERPROC lpTimerFunc)
改成void OnTimer(UINT nIDEvent)就搞定了~
不知道WTL8.0还做出了哪些改变,没有文档郁闷中
转自:http://blog.youkuaiyun.com/hellward/article/details/5415084

本文介绍了一个关于WTL8.0中定时器回调函数的问题及解决方案。作者遇到的问题是定时器回调函数参数类型不符合宏定义的要求,通过调整函数参数使其符合WTL8.0的规范,成功解决了该问题。
2758

被折叠的 条评论
为什么被折叠?



