我是MFC的新手。
如何释放其作为通过资源(WPARAM)
在SendMessage()
。
在这里,我使用“新”来创建它。以下是相同的快照。
void Build::BuildCube()
{
SCtPt *data = new SCtPt;
data->vm = true;
int dir = 100;
MFrame()->SendMessage(WM_MAP_NEW, (WPARAM)data, (LPARAM) dir);
}
我想确保此功能的“数据”资源得到释放。
谢谢...
由于该SendMessage()
API是同步API,因此在返回之前,它将消息发送到另一个窗口过程。当调用SendMessage()
返回时,可以释放/释放数据:
void Build::BuildCube()
{
SCtPt *data = new SCtPt;
data->vm = true;
int dir = 100;
MFrame()->SendMessage(WM_MAP_NEW, (WPARAM)data, (LPARAM)dir);
delete data;
}
或者,更好的是,您可以避免完全在堆上分配数据。只需将其分配在堆栈上,然后让RAII处理其余部分:
void Build::BuildCube()
{
SCtPt data; // don't use "new", so you won't get a pointer
data.vm = true;
int dir = 100;
MFrame()->SendMessage(WM_MAP_NEW, (WPARAM)data, (LPARAM)dir);
// no delete necessary!
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句