c++ - 回调例程未被触发

标签 c++ mfc callback

我创建了一个非常简单的一键式 MFC 对话框应用程序,它试图利用回调函数。该应用符合要求并运行良好,但从未触发回调例程。

为了让回调正确触发,需要修改什么?

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

代码使用 CodeProject 上的警报类,回调函数支持每 3 秒触发一次(由传入的代码决定)。

谢谢!

最佳答案

我看过你的代码,我相信从按钮调用的函数是问题所在

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 代码项目页面上的示例代码。

关于c++ - 回调例程未被触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/712737/

相关文章:

C++ MFC 将文件写入插入的 USB 驱动器

c# - 无法将 winform 控件大小传递给非托管代码

javascript - 在没有 promise 的情况下将多个参数应用于回调 - node-js

javascript - 有没有办法在回调中保留此引用?

c++ - boost socket读写函数线程安全吗?

从基类继承的C++公共(public)方法不能访问派生类中的私有(private)成员变量

winapi - 如何在非模式对话框中模拟模式对话框 UI 行为?

c++ - 如果方法调用以两个冒号开头,这意味着什么?

c++ - 试图理解fork函数返回值的逻辑

java - Android 5.0 Lollipop 中的 mediaPlayer,我无法播放,来自 url 的长声音。在 Android 5.0 到来之前我从未遇到过任何问题