请问一下,我通过读注册表获得可使用的COM口,想放到下拉列表里,但是出来的却是乱码。
MFC中读注册表,获得COM数目,并在下拉列表中显示,但是出来的却是乱码。
软件环境:WIN7 x64,Vs2010
void FindCommPort(CComboBox *m_ComId1)
{
HKEY hKey;
#ifdef _DEBUG
ASSERT(m_ComId1 != NULL);
m_ComId1->AssertValid();
#endif
if(::RegOpenKeyExA(HKEY_LOCAL_MACHINE,"Hardware\\DeviceMap\\SerialComm",NULL,KEY_READ,&hKey)==ERROR_SUCCESS)
{
int i=0;
char portName[256],commName[256];
DWORD dwlong,dwSize;
while(1)
{
dwlong = dwSize =sizeof(portName)/sizeof(PUCHAR);
if(::RegEnumValueA(hKey,i,portName,&dwlong,NULL,NULL,(PUCHAR)commName,&dwSize)==ERROR_NO_MORE_ITEMS)
break;
m_ComId1->AddString(LPCTSTR(commName));
i++;
}
if(i==0)
{
::AfxMessageBox(_T("没有可用的COM口"));
}
RegCloseKey(hKey);
}
}