以下是一个示例:
#include <windows.h>
#include <commctrl.h>
// 回调函数,用于删除指针
int CALLBACK DeletePtrCallback(void* p, void* pData) {
delete p;
return 1;
}
int main() {
// 初始化 Common Controls 库
INITCOMMONCONTROLSEX icex;
icex.dwSize = sizeof(INITCOMMONCONTROLSEX);
icex.dwICC = ICC_LISTVIEW_CLASSES;
InitCommonControlsEx(&icex);
// 创建动态指针数组
HDPA hDpa = DPA_Create(10);
if (hDpa == NULL) {
// 处理错误
return 1;
}
// 向数组中添加指针
int* pData1 = new int(42);
DPA_AppendPtr(hDpa, pData1);
// 向数组中添加另一个指针
int* pData2 = new int(99);
DPA_AppendPtr(hDpa, pData2);
// 使用 DPA_DestroyCallback 删除所有指针
DPA_DestroyCallback(hDpa, DeletePtrCallback, NULL);
return 0;
}
在这个例子中,DeletePtrCallback 函数被用作回调函数,当 DPA_DestroyCallback 被调用时,它将被用于删除数组中的每个指针。这样就能够达到删除所有指针的目的。
请注意,为了演示清晰,我在代码中省略了一些错误处理,实际应用中应该进行适当的错误检查和处理。
转载请注明出处:http://www.zyzy.cn/article/detail/27251/Win32 API/Dpa_dsa.h/DPA_DeleteAllPtrs