void CDialogA::OnInitDialog()
{
CString pname, key,name;
int len;
const int len_b1=255;
const int len_b2=1000;
CArray<int, int> num;
int insrt=0;
num.RemoveAll();
key="●●●";
HKEY hkey;
if(::RegOpenKeyEx(HKEY_LOCAL_MACHINE, key ,0,KEY_READ | KEY_EXCUTE, &hkey)==ERROR_SUCCESS){
char szBuffer1[len_b1],szBuffer2[len_b2];
DWORD dwBufferSize1=len_b1;
DWORD dwBufferSize2=len_b2;
DWORD dwSubkey=0;
DWORD dwType=REG_SZ;
while(::RegEnumValue(hkey,dwSubKey++, szBuffer1, &dwBufferSize1,NULL,&dwType,(LPBYTE)szBuffer2,
&dwBufferSize2)==ERROR_SUCCESS){
IsAdd=TRUE;
name=szBuffer1;
name=name.Right(name.GetLength()-7);
int no=atoi(name);
for(int i=0; i<num.GetSize(); i++){
if(num<no)
continue;
else if(num>no){
IsAdd=FALSE;
insrt=i;
num.InsertAt(i,no);
break;
}
}
(以下略)
}少し長いので聞きたい所だけ取り出しました。このプログラムはレジストリからキーを取得し、エントリを列挙する。
szBuffer1にはレジストリのエントリ名が格納されるバッファ
szBuffer2にはレジストリエントリのデータが格納されるバッファ だとは思うんですがその後がよくわかりません。
>>name=name.Right(name.GetLength()-7); で
レジストリのエントリ名はPositionでデータにはダイアログのサイズが入ってました。
名前 種類 データ
Position REG_SZ 100,100,100,100 など
swBuffer1には定数文字列への32ビットポインタのLPTSTR型ですよね。
長さ-7とかいうのがさっぱり意味わかりません。