На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual C++ / MFC / WTL (далее Раздела)
1) На Раздел распространяются все Правила Форума.
2) Перед тем, как создать новый топик, убедитесь, что Вы читали Правила создания тем в Разделе.
3) Вопросы, не связанные с программированием (настройки MS Visual Studio, книги, библиотеки и т.д.),
обсуждаются в разделе C/C++: Прочее
4) Вопросы разработки .NET (Windows Form, C++/CLI и т.п.) приложений на Visual C++/C# обсуждаются в разделе .NET.
5) Нарушение Правил может повлечь наказание со стороны модераторов.

Полезные ссылки:
user posted image FAQ Раздела user posted image Обновления для FAQ Раздела user posted image Поиск по Разделу user posted image MSDN Library Online
Модераторы: ElcnU
  
> MFC: Чтение из регистра - помогите разобраться
    ExpandedWrap disabled
          HKEY hKey;
          CString cKeyName = _T("");
       
          if (::RegOpenKeyEx(HKEY_CURRENT_USER, _T("Software\\MyProgram\\Params"), 0, KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS)
          {
              TCHAR szData[256] = {0};
              DWORD dwKeyDataType;
              DWORD dwDataBufSize = 256;
       
              for (byte i = 1; i < 254; i++)
              {
                  cKeyName.Format(_T("Param%u"), i);
       
                  LONG hres = ::RegQueryValueEx(hKey, cKeyName, NULL, &dwKeyDataType, (LPBYTE)&szData, &dwDataBufSize);
                  if (hres == ERROR_SUCCESS)
                  {
                      switch (dwKeyDataType)
                      {
                      case REG_SZ:
                          m_ComboParams.AddString(szData);
                          ZeroMemory(szData, 1);
                          break;
                      }
                  }
                  else
                  {
                      break;
                  }
       
              }
              ::RegCloseKey(hKey);
          }

    В разделе Params несколько строковых значений с именами Param1, Param2, Param3 и т.д.
    Почему-то этим кодом читается только первый параметр Param1, а дальше возвращается код ошибки, типа "файл не найден".
    Подскажите, в чем дело, как поправить.
      Разобрался.

      ExpandedWrap disabled
            HKEY hKey;
            CString cKeyName = _T("");
         
            if (::RegOpenKeyEx(HKEY_CURRENT_USER, _T("Software\\MyProgram\\Params"), 0, KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS)
            {
                TCHAR szData[256]; ZeroMemory(szData, 1);
                DWORD dwKeyDataType;
                DWORD dwDataBufSize = 256;
         
                for (byte i = 1; i < 254; i++)
                {
                    cKeyName.Format(_T("Param%u"), i);
         
                    LONG hres = ::RegQueryValueEx(hKey, cKeyName, NULL, &dwKeyDataType, (LPBYTE)&szData, &dwDataBufSize);
                    if (hres == ERROR_SUCCESS)
                    {
                        switch (dwKeyDataType)
                        {
                        case REG_SZ:
                            m_ComboParams.AddString(szData);
                            ZeroMemory(szData, 1); dwKeyDataType = 0; dwDataBufSize = 256;
                            break;
                        }
                    }
                    else
                    {
                        break;
                    }
         
                }
                ::RegCloseKey(hKey);
            }
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0206 ]   [ 17 queries used ]   [ Generated: 25.04.24, 16:08 GMT ]