16,372
社区成员




LONG Ctest::GetNextNameValue(HKEY key, LPCTSTR subkey, LPTSTR szName, LPTSTR szData)
{
HKEY hkey = NULL;
DWORD dwIndex = 0;
LONG retval;
if (subkey == NULL && szName == NULL && szData == NULL)
{
if (hkey)
RegCloseKey(hkey);
hkey = NULL;
return ERROR_SUCCESS;
}
if (subkey && subkey[0] != 0)
{
retval = RegOpenKeyEx(key, subkey, 0, KEY_ALL_ACCESS, &hkey);
if (retval != ERROR_SUCCESS)
{
//TRACE(_T("RegOpenKeyEx failed\n"));
MessageBox(NULL, _T("RegOpenKeyEx failed!"), NULL, 0);
return retval;
}
else
{
MessageBox(NULL, _T("RegOpenKeyEx succeed!"), NULL, 0);
}
dwIndex = 0;
}
else
{
dwIndex++;
}
ASSERT(szName != NULL && szData != NULL);
*szName = 0;
*szData = 0;
TCHAR szValueName[MAX_PATH];
DWORD dwValueNameSize = sizeof(szValueName)-1;
TCHAR szValueData[MAX_PATH];
DWORD dwValueDataSize = sizeof(szValueData)-1;
DWORD dwType = 0;
memset(szValueName, 0, sizeof(szValueName));
memset(szValueData, 0, sizeof(szValueData));
retval = RegEnumValue(hkey, dwIndex, szValueName, &dwValueNameSize, NULL,
&dwType, (LPBYTE)szValueData, &dwValueDataSize);
if (retval == ERROR_SUCCESS)
{
lstrcpy(szName, szValueName);
lstrcpy(szData, szValueData);
}
else
{
CString str;
str.Format(_T("RegEnumValue failed! return value = 0x%x", retval));
MessageBox(NULL, str, NULL, 0);
}
return retval;
}
int CALLBACK EnumFontFamExProc(
ENUMLOGFONTEX *lpelfe, // pointer to logical-font data
NEWTEXTMETRICEX *lpntme, // pointer to physical-font data
int FontType, // type of font
LPARAM lParam // application-defined data
)
{
CEdit* pEdit=(CEdit*)lParam;
lpelfe->elfFullName;
int L=pEdit->GetWindowTextLength();
pEdit->SetSel(L,L);
if(L>0)
{
pEdit->ReplaceSel(_T("\n"));
L=pEdit->GetWindowTextLength();
pEdit->SetSel(L,L);
}
pEdit->ReplaceSel(lpelfe->elfFullName);
return 1;
}
void CEnumFontsTestDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
LOGFONT lf;
lf.lfCharSet=DEFAULT_CHARSET;
lf.lfFaceName[0]=0;
lf.lfPitchAndFamily=0;
CDC* pDC=GetDC();
EnumFontFamiliesEx(pDC->m_hDC,&lf,(FONTENUMPROC)EnumFontFamExProc,(LPARAM)&TxEdit,0);//TxEdit:CEdit类对象
ReleaseDC(pDC);
}