回调例程未被触发

时间:2009-04-03 06:25:02

标签: c++ mfc callback

我创建了一个非常简单的单按钮MFC对话框应用程序,它试图利用回调函数。该应用程序符合并运行正常,但回调例程永远不会被触发。

需要修改哪些内容才能使回调正确触发?

您可以在此处下载test.zip文件(测试应用程序位于VS 2003中,以确保更多人可以试用):http://tinyurl.com/testfile-zip

代码在CodeProject上使用警报类,并且回调函数被激活每3秒触发一次(由传入的代码确定)。

谢谢!

1 个答案:

答案 0 :(得分:1)

我查看了你的代码,我相信从按钮调用的函数是问题

void CTestDlg::OnBnClickedButton1()
{
    CAlarmClock clock;

    REPEAT_PARMS rp;
    ZeroMemory(&rp, sizeof(REPEAT_PARMS));

    rp.bRepeatForever = TRUE;
    rp.Type = Repeat_Interval;
    rp.ss = 3;

    clock.SetRepeatAlarm(0, 0, 0, rp, CallbackRtn);
}

这将在功能堆栈上创建闹钟。 因此,该函数结束时会破坏此CAlarmclock对象及其内容。

因为它能够存在足够长的时间来实际进行回调 你需要将它添加为对话框类的成员变量,以便它存在并在对话框存在时回调。

请参阅CAlarmclock codeproject页面上的示例代码,了解如何正确使用此类。

相关问题