下面是我的程序:
void SZhiDialog::OnSetfocusCombo1() 
{
// TODO: Add your control notification handler code here
CComboBox my_ComboBox;
HKEY hkey;
long ret0;
LPCSTR data_Get="SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Adapters";
ret0=RegOpenKeyEx(HKEY_LOCAL_MACHINE,data_Get,0,KEY_READ,&hkey);
if (ret0!=ERROR_SUCCESS)
{
MessageBox("Error!");
return;
}
TCHAR szBuffer[256];
DWORD dwSize=256;
ZeroMemory(szBuffer,256);
DWORD dIndex;
dIndex=0L;
while(RegEnumValue(hkey,dIndex,szBuffer,&dwSize,NULL,NULL,NULL,NULL)==ERROR_SUCCESS)
{
//MessageBox(szBuffer,"");
my_ComboBox.AddString(szBuffer);
dIndex++;
ZeroMemory(szBuffer,256); //注意这两行
dwSize=256;               //
}
return;
}
执行的时候出现 error提示,就是说RegOpenKeyEx函数没有返回正确的值,为什么?

解决方案 »

  1.   

    这段代码没有问题,如果失败的话,请先确认你的注册表里确实有以下项
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Adapters
      

  2.   

    不好意思,这个问题解决了,但我怎么样才能把RegEnumValue查到的值在combo box控件中显示出来呢?上面我用my_ComboBox.AddString(szBuffer);显示不出来。呵呵,我刚学MFC,还很菜,请多指点
      

  3.   

    你的combo box应该下拉后才能看到,在编辑对话框时,点击combo box的下拉按钮,在把宽度加宽.
      

  4.   

    呵呵,还真没注意你的ComboBox,首先你要确认这个ComboBox已经可以在界面上显示出来,如果你没有在资源编辑器里面把他加到某个窗体(form)上的话,就用Create函数先把他创建出来,创建的时候,选择你的ComboBox所附着的父窗口。
    你的CComboBox my_ComboBox;如果只是在这个函数里这样定义,VC怎么知道这个my_ComboBox该放在哪里呢?当然也就显示不出来。
      

  5.   

    我把ComboBox防在一个对话框上的,在对话框类中定义了成员变量
    CComboBox  m_combox;当我将上面的程序的定义去掉后,用m_combox.addstring(szBuffer)是出现异常错误。我的void SZhiDialog::OnSetfocusCombo1() 函数选择的是设置焦点的消息。请高手帮帮忙