1

我在原生 WinAPI 世界中使用 C++/MFC 进行编程。比如说,我有一个对话框窗口类(在 MFC 中创建并从 CDialog 派生)。我还在 OnInitDialog() 中创建了一个计时器,当窗口即将显示时,使用 SetTimer 方法。我的问题是何时需要正确释放此计时器(或其他分配的资源)?

PS。我尝试在 PostNcDestroy() 中执行此操作,但 KillTimer 失败。但是当我在 OnClose/WM_CLOSE 中执行此操作时,它可以工作,但当用户单击“确定”按钮关闭对话框时则不行。有统一的通知吗?

4

1 回答 1

3

我在 ON_WM_DESTROY 处理程序中执行此操作。在 WM_CLOSE 和 PostNcDestroy 方法之间调用。这是您应该销毁所有窗口资源的地方。

请记住,例如 GDI 资源应该尽可能快地释放,重新创建实际上不再花费时间,而且 GDI 资源的数量非常少。我认为整个系统的默认值是 10000,即使在 64 位 Windows 下也是如此。

于 2012-04-18T02:03:10.957 回答