我是 C++ 的新手,最近开始了一个项目,我需要访问设备、收集某些数据并将其转发到本地网络上的数据流。
虽然我的应用程序完成了所有需要的事情,但它缺少功能:当我关闭应用程序正在运行的窗口时,它不会停止硬件设备。结果是,每次我完成程序时都必须进行硬件重置。这不仅不方便,而且对于程序的预期用途来说也是不可能的。
我基本上只是想为一个函数设置一个回调,当程序关闭时执行(通过单击 x,按 Alt-F4 等)
这可能吗?我可以为此类事件创建处理程序:
BOOL WINAPI ConsoleHandler(DWORD dwCtrlEvent)
{
switch (dwCtrlEvent)
{
case CTRL_CLOSE_EVENT:
// something
case CTRL_SHUTDOWN_EVENT:
// the same?
default:
return FALSE;
}
}
如果这是正确的方法,我想知道如何使用这个处理程序?我是否需要在我的程序中创建这样的处理程序并且不断更新?
我很感激任何帮助 乔纳斯
最佳答案
在这种情况下,正确使用 RAII 会对您有所帮助。
这基本上是说将资源所有权包装在对象中。然后您可以在程序启动时创建一个对象并在程序结束时清理所有资源:
struct DeviceManager
{
DeviceManager() { InitDevice(); }
~DeviceManager() { DecativateDevice(); }
};
DeviceManager dm; //namespace scope, single translation unit
dm
将在程序启动时初始化,然后进入 main()
并在程序结束时释放。
关于C++ - 如何在应用程序退出时执行命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25122634/