MFC 回调函数案例演示
时间: 2023-11-11 16:58:43 浏览: 133
好的,关于 MFC 回调函数的案例演示,可以举一个简单的例子:在 MFC 应用程序中,我们可以使用 SetTimer 函数设置一个定时器,然后在定时器消息 WM_TIMER 中处理定时器事件。但是如果我们想要在定时器事件中调用某个类的成员函数,就需要使用回调函数。
具体实现方法如下:
1. 在类的头文件中声明回调函数:
```
class CMyClass
{
public:
void SetTimerCallback(UINT nIDEvent, void(*pfnCallback)(void*), void* pParam);
static void TimerCallback(void* pParam);
private:
UINT m_nTimerID;
};
```
2. 在类的实现文件中定义回调函数:
```
void CMyClass::SetTimerCallback(UINT nIDEvent, void(*pfnCallback)(void*), void* pParam)
{
m_nTimerID = nIDEvent;
::SetTimer(NULL, nIDEvent, 1000, NULL);
::SetTimer(NULL, nIDEvent, 1000, (TIMERPROC) pfnCallback);
}
void CMyClass::TimerCallback(void* pParam)
{
CMyClass* pThis = (CMyClass*) pParam;
// 在这里处理定时器事件
}
```
3. 在需要使用定时器的地方调用 SetTimerCallback 函数,并传入回调函数:
```
void CMyDialog::OnInitDialog()
{
CDialogEx::OnInitDialog();
m_myClass.SetTimerCallback(1, &CMyClass::TimerCallback, &m_myClass);
}
```
这样,在定时器事件 WM_TIMER 中,就会调用 CMyClass::TimerCallback 函数,从而实现了回调。
阅读全文