//这里是头文件定义:
public:
void EnumComPort(HKEY hKey, LPCTSTR cstrKey);//这里是CPP文件函数对应:
void CTestDlg::EnumComPort(HKEY hKey, LPCTSTR cstrKey)
{
static HKEY hLastKey = hKey;
LONG lResult;
DWORD dwIndex =0;
HKEY hCurKey = hKey;
DWORD dwKeyType;
DWORD dwKeyDataLength,dwKeyNameLen;
LPBYTE pbbinKeyData = NULL;
TCHAR *tcKeyName = NULL;
TCHAR tcDataType[1024] = _T("");
lResult = RegOpenKeyEx(hCurKey, cstrKey, 0, KEY_QUERY_VALUE, &hKey);
if(lResult != ERROR_SUCCESS)
return;
DWORD lNoOfValues = 0;
DWORD lLongestKeyNameLen = 1;
DWORD lLongestDataLen = 1;
lResult = RegQueryInfoKey(hKey, NULL, NULL, NULL,NULL, NULL, NULL,&lNoOfValues, &lLongestKeyNameLen, &lLongestDataLen, NULL, NULL);
if(lResult != ERROR_SUCCESS)
return;
hLastKey = hKey;
lLongestKeyNameLen++;
lLongestDataLen++;
tcKeyName = new TCHAR[lLongestKeyNameLen];
pbbinKeyData = new BYTE[lLongestDataLen];
CString cstrFinalData,cstrTemp;
while(TRUE)
{
memset(pbbinKeyData, 0, lLongestDataLen);
memset(tcKeyName, 0, lLongestKeyNameLen);
dwKeyType = dwKeyDataLength = dwKeyNameLen = 0;
dwKeyNameLen = lLongestKeyNameLen;
dwKeyDataLength = lLongestDataLen;
lResult = RegEnumValue(hKey, dwIndex, tcKeyName, &dwKeyNameLen, NULL, &dwKeyType, pbbinKeyData, &dwKeyDataLenght);
if(lResult == ERROR_NO_MORE_ITEMS)
break;
AddRegistryItem(tcKeyName, dwKeyType, pbbinKeyData, dwKeyDataLength, dwIndex);
dwIndex++;
}
RegCloseKey(hKey);
delete tcKeyName;
delete pbbinKeyData; /*
HKEY hkey;// HKEY_LOCAL_MACHINE; char sz[256]={0};
DWORD dwtype, sl = 256;
RegOpenKeyEx(HKEY_LOCAL_MACHINE, "HARDWARE\\DEVICEMAP\\SERIALCOMM", NULL, KEY_ALL_ACCESS, &hkey); RegQueryValueEx(hkey, "\\Device\\Serial0", NULL, &dwtype, (LPBYTE)sz, &sl);
RegCloseKey(hkey);
AfxMessageBox((LPCSTR)sz);//AfxGetMainWnd()->m_hWnd,
*/
}错误如下:
1>Compiling...
1>Pre-Power TestDlg.cpp
1>d:\...testdlg.cpp(53) : error C3872: '0x3000': this character is not allowed in an identifier
1>d:\...testdlg.cpp(54) : error C2065: ' ' : undeclared identifier
1>d:\...testdlg.cpp(54) : error C2146: syntax error : missing ';' before identifier 'DWORD'
1>d:\...testdlg.cpp(54) : error C2146: syntax error : missing ';' before identifier 'dwKeyDataLength'
1>d:\...testdlg.cpp(54) : error C2275: 'DWORD' : illegal use of this type as an expression
1> c:\program files\microsoft visual studio 8\vc\platformsdk\include\windef.h(151) : see declaration of 'DWORD'
1>d:\...testdlg.cpp(54) : error C2065: 'dwKeyDataLength' : undeclared identifier
1>d:\...testdlg.cpp(54) : error C2065: 'dwKeyNameLen' : undeclared identifier
1>d:\...testdlg.cpp(58) : error C3872: '0x3000': this character is not allowed in an identifier
1>d:\...testdlg.cpp(59) : error C2143: syntax error : missing ';' before 'if'
1>d:\...testdlg.cpp(69) : error C3872: '0x3000': this character is not allowed in an identifier
1>d:\...testdlg.cpp(70) : error C2146: syntax error : missing ';' before identifier 'tcKeyName'
1>d:\...testdlg.cpp(80) : error C2065: 'dwKeyDataLenght' : undeclared identifier
1>d:\...testdlg.cpp(83) : error C3861: 'AddRegistryItem': identifier not found
1>d:\...testdlg.cpp(88) : error C3872: '0x3000': this character is not allowed in an identifier
1>d:\...testdlg.cpp(88) : error C2065: ' delete' : undeclared identifier
1>d:\...testdlg.cpp(88) : error C2146: syntax error : missing ';' before identifier 'pbbinKeyData'
1>d:\...testdlg.cpp(332) : error C2660: 'CTestDlg::EnumComPort' : function does not take 0 arguments
1>Build log was saved at "file://d:\...Test\Debug\BuildLog.htm"
1>Test - 17 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
解决方案 »
- win32 urldowntofile
- 希望有大虾能指点下迷途我........
- 如何在切分窗口中使用自定义控件
- 我的程序碰到一个很奇怪的错误: local function definitions are illeg .帮我看看,这是什么问题?
- 为什么VC里的类不能在一个普通的C++类中使用
- 如何在程序里实现拼写检查功能?组件?在线等待!!
- 请问为何生成一个MFC EXE时,把doc/view architecture support复选框去掉后,最后连VIEW的父类都不能选了呢?
- 如何检测到鼠标滚轮的滚动速度
- receive如何设置一定时间没收到数据后返回
- 用 new 分配的东西都必须用 delete 册除吗?
- 子线程结束资源释放问题
- vc中,用户自定义消息,需要在类的.h和.cpp中哪些地方添加信息,添加哪些信息呢?
请大家指教,多谢,