#include <windows.h>
#include <commctrl.h>
#include <iostream>
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);
// 获取数组中指定位置的指针
int nPosition = 0;
int* pResult = (int*)DPA_GetPtr(hDpa, nPosition);
if (pResult != NULL) {
// 使用 pResult,这是数组中指定位置的指针
std::cout << "Pointer Value: " << *pResult << std::endl;
}
// 注意:pResult 不拥有指针的所有权,不要删除它指向的对象
// 清理资源
DPA_Destroy(hDpa);
return 0;
}
在这个例子中,DPA_GetPtr 函数被用于获取动态指针数组的指定位置的指针。需要注意的是,pResult 指向的对象仍然由数组管理,不要尝试在使用完指针后删除它,除非你手动从数组中删除了这个指针。
转载请注明出处:http://www.zyzy.cn/article/detail/27254/Win32 API/Dpa_dsa.h/DPA_GetPtr