Мы уже несколько раз касались работы с реестром, но ни разу не работали с классом CRegKey. А он на мой взгляд наиболее удачно сделан. Давайте создадим приложение на базе диалогового окна. Поместим туда элемент управления Edit и две кнопки для тестов. Для того, чтобы Вы могли работать с классом CRegKey Вам нужно подключить заголовочный файл.
#include "atlbase.h"
Для элемента редактирования я привязал переменную:
class CTestRegDlg : public CDialog { ...... // Dialog Data //{{AFX_DATA(CTestRegDlg) enum { IDD = IDD_TESTREG_DIALOG }; CString m_Edit; //}}AFX_DATA ......
Вот код для первой кнопки. По нажатию на нее Вы получите информацию из реестра.
void CTestRegDlg::OnButton1() { CRegKey key; LONG status = key.Open(HKEY_LOCAL_MACHINE, "Config\\0001\\Display\\Settings"); if (status == ERROR_SUCCESS) { char setting[255]; DWORD settingSize=sizeof(setting); status = key.QueryValue(setting, "Resolution", &settingSize); if (status == ERROR_SUCCESS) { CString s(setting); m_Edit=s; UpdateData(FALSE); } else AfxMessageBox("Not Read Params"); } else AfxMessageBox("Error Open Key"); key.Close(); }
Что здесь написано ??? Создаем объект класса CRegKey key;, открываем раздел реестра key.Open, если мы смогли это сделать status == ERROR_SUCCESS тогда мы можем получить значение параметров key.QueryValue. Классно и удобно. В этом коде мы получим разрешение экрана в элементе редактирования. В конце объект реестра нужно закрыть key.Close();.
Давайте посмотрим как можно создавать разделы:
void CTestRegDlg::OnButton2() { CRegKey key; LONG status = key.Create(HKEY_CURRENT_USER, "Software\\Step By Step"); if (status == ERROR_SUCCESS) { status = key.Create(key.m_hKey,"MFC Step by Step"); if (status == ERROR_SUCCESS) { } else AfxMessageBox("Not Create Params"); } else AfxMessageBox("Error Create Key"); key.Close(); }
Опять создаем объект класса CRegKey key и создаем раздел реестра key.Create(), если создали if (status == ERROR_SUCCESS), тогда можем создать подраздел key.Create(). Вот так выглядит результат в реестре.
Если провести совершенно общий обзор этого класса так как это шаги, а не подробности :-) То вот главные функции
CRegKey::Open Открыть раздел CRegKey::Create Создать раздел CRegKey::QueryValue Получить значение CRegKey::SetValue Установить значение CRegKey::Close Закрыть раздел