我现在 用 效率底的方式实现了 。不爽。
我原先这样:
int j=0;
if(ERROR_SUCCESS!=RegOpenKeyEx(...,&hk) )
return ;
TCHAR name[256],data[256];
DWORD size1=256,size2=256;
for(int i=0;;i++)
{
if(ERROR_NO_MORE_ITEMS==(ret::RegEnumValue(hk,i,name,&size1,NULL,NULL,(BYTE*)data,&size2)))
break;
if(ERROR_SUCCESS!=ret)
continue;
m_list.InsertColumn(j,name);
m_list.SetItemText(j++,1,data);
}
只能得到一两项!
我原先这样:
int j=0;
if(ERROR_SUCCESS!=RegOpenKeyEx(...,&hk) )
return ;
TCHAR name[256],data[256];
DWORD size1=256,size2=256;
for(int i=0;;i++)
{
if(ERROR_NO_MORE_ITEMS==(ret::RegEnumValue(hk,i,name,&size1,NULL,NULL,(BYTE*)data,&size2)))
break;
if(ERROR_SUCCESS!=ret)
continue;
m_list.InsertColumn(j,name);
m_list.SetItemText(j++,1,data);
}
只能得到一两项!
{ size1=256,size2=256;//每次循环都需要初始化,因为RegEnumValue函数会重新设置两个变量的值. if(ERROR_NO_MORE_ITEMS==(ret::RegEnumValue(hk,i,name,&size1,NULL,NULL,(BYTE*)data,&size2)))
break;
if(ERROR_SUCCESS!=ret)
continue;
m_list.InsertColumn(j,name);
m_list.SetItemText(j++,1,data);
}