我有一个遗留代码。代码是这样工作的:在一个Event1事件发生之后,它CWindowImpl在堆中创建一个窗口对象(继承自类)。发生后,Event2它会应用在窗口中所做的更改,通过调用将其关闭并通过调用DestroyWindow()释放堆中的内存delete。
此代码有问题,因为它在处理此窗口的所有消息之前删除了窗口对象。如何确定何时调用deletewindow 对象是安全的?
我发现的唯一解决方案是覆盖OnFinalMessage并在那里调用delete this。我不喜欢它,因为它必须保证对象只在堆中创建。有更好的想法吗?
谢谢你。