Visual C++ MFC в подробностях
Страница 45. Функции для работы с реестром


    Функции для работы с реестром

    Функция CWinApp::SetRegistryKey:

    void SetRegistryKey( LPCTSTR lpszRegistryKey );
    void SetRegistryKey( UINT nIDRegistryKey );

    Параметры:

    • lpszRegistryKey - Указатель на строку содержащую имя ключа реестра.
    • nIDRegistryKey - ID/индекс ключа в реестре.

    Заставляет приложение сохранять установки в реестр вместо INI файлов. Эта функция устанавливает m_pszRegistryKey, которая затем используется в следующих функциях-членах CWinApp: GetProfileInt, GetProfileString, WriteProfileInt, и WriteProfileString. Если эта функция была вызвана, список недавно используемых файлов (list of most recently-used - MRU) также сохраняется в реестре. Ключ реестра обычно является именем компании. Ключ реестра имеет следующий вид: HKEY_CURRENT_USER\Software\<company name>\<application name>\<section name>\<value name>.

    Функция CWinApp::GetProfileInt:

    UINT GetProfileInt( LPCTSTR lpszSection, LPCTSTR lpszEntry, int nDefault );

    Возвращаемое значение:

    Если функция успешно отработала - целое значение строки определенной записи. Возвращаемое значение - значение параметра nDefault, если функция не нашла записи. Возвращаемое значение - 0 если значение, которое соответствует заданной записи не целое.

    Эта функция поддерживает шестнадцатеричную нотацию для значений в .INI файле. Когда вы получаете знаковое целое, вы должны перевести значение в int.

    Параметры:

    • lpszSection - Указатель на строку завершенную нулем, которая определяет секцию, содержащую запись в реестре.
    • lpszEntry - Указатель на строку завершенную нулем, которая содержит запись, значение которой будет возвращено.
    • nDefault - Определяет значение по умолчанию для возвращения, если система не сможет найти запись. Это значение может быть беззнаковым целым (unsigned) в диапазоне от 0 до 65535 или знаковым (signed) в диапазоне от -32768 до 32767.

    Вызывайте эту функцию для получения целого значения записи из определенной секции из реестра или .INI файла.

    Записи сохраняются следующим образом:

    • В Windows NT, значение сохраняется в ключ реестра.
    • В Windows 3.x, значение сохраняется в WIN.INI файл.
    • В Windows 95, значение сохраняется в скрытую версию WIN.INI файла.

    Эта функция не чувствительна к регистру букв, таким образом, строки в параметрах lpszSection и lpszEntry могут использовать буквы разного регистра.

    Функция CWinApp::GetProfileString:

    CString GetProfileString( LPCTSTR lpszSection, LPCTSTR lpszEntry,
    LPCTSTR lpszDefault = NULL );

    Возвращаемое значение:

    Возвращаемое значение - строка из .INI файла приложения или lpszDefault, если строка не найдена. Максимальная длинна строки, которую поддерживает система, определена в _MAX_PATH. Если lpszDefault равно NULL, возвращаемое значение - пустая строка.

    Параметры:

    • lpszSection - Указатель на строку завершенную нулем, которая определяет секцию содержащую запись в реестре.
    • lpszEntry - Указатель на строку завершенную нулем, которая содержит запись, строка из которой будет возвращена. Это значение не должно быть равно NULL.
    • lpszDefault - Указатель на значение строки по умолчанию для заданной записи, если запись не найдена в инициализирующем (INI) файле.

    Вызывайте эту функцию для получения строки связанной с записью в заданной секции реестра приложения или .INI файла.

    Записи сохраняются следующим образом:

    • В Windows NT, значение сохраняется в ключ реестра.
    • В Windows 3.x, значение сохраняется в WIN.INI файл.
    • В Windows 95, значение сохраняется в скрытую версию WIN.INI файла.

    Пример:

    CString strSection = "Моя секция";
    CString strStringItem = "Мой строковый элемент";
    CString strIntItem = "Мой целый элемент";

    CWinApp* pApp = AfxGetApp();

    pApp->WriteProfileString(strSection, strStringItem, "test");

    CString strValue;
    strValue = pApp->GetProfileString(strSection, strStringItem);
    ASSERT(strValue == "test");

    pApp->WriteProfileInt(strSection, strIntItem, 1234);
    int nValue;
    nValue = pApp->GetProfileInt(strSection, strIntItem, 0);
    ASSERT(nValue == 1234);

    Функция CWinApp::WriteProfileInt:

    BOOL WriteProfileInt( LPCTSTR lpszSection, LPCTSTR lpszEntry, int nValue );

    Возвращаемое значение:

    Не 0 в случае удачного вызова функции, иначе 0.

    Параметры:

    • lpszSection - Указатель на строку завершенную нулем, которая определяет секцию, содержащую запись. Если секция не найдена, она создается. Имя секции не зависит от регистра; строка может сочетать как заглавные, так и прописные буквы.
    • lpszEntry - Указатель на строку завершенную нулем, которая содержит запись, в которую будет записано значение. Если запись не найдена в заданной секции, она создается.
    • nValue - Содержит значение для записи.

    Вызывайте эту функцию для записи заданного значения в заданную секцию реестра или .INI файл. 

    Записи сохраняются следующим образом:

    • В Windows NT, значение сохраняется в ключ реестра.
    • В Windows 3.x, значение сохраняется в WIN.INI файл.
    • В Windows 95, значение сохраняется в скрытую версию WIN.INI файла.

    Пример:

    CString strSection = "Моя секция";
    CString strStringItem = "Мой строковый элемент";
    CString strIntItem = "Мой целый элемент";

    CWinApp* pApp = AfxGetApp();

    pApp->WriteProfileString(strSection, strStringItem, "test");

    CString strValue;
    strValue = pApp->GetProfileString(strSection, strStringItem);
    ASSERT(strValue == "test");

    pApp->WriteProfileInt(strSection, strIntItem, 1234);
    int nValue;
    nValue = pApp->GetProfileInt(strSection, strIntItem, 0);
    ASSERT(nValue == 1234);

    Функция CWinApp::WriteProfileString:

    BOOL WriteProfileString( LPCTSTR lpszSection, 
    LPCTSTR lpszEntry, LPCTSTR lpszValue );

    Возвращаемое значение: Не 0 в случае удачного вызова функции, иначе 0.

    Параметры:

    • lpszSection - Указатель на строку завершенную нулем, которая определяет секцию, содержащую запись. Если секция не найдена, она создается. Имя секции не зависит от регистра; строка может сочетать как заглавные, так и прописные буквы.
    • lpszEntry - Указатель на строку завершенную нулем, которая содержит запись, в которую будет записано значение. Если запись не найдена в заданной секции, она создается.
    • lpszValue - Указатель на строку, предназначенную для записи. Если этот параметр NULL, запись определенная параметром lpszEntry удаляется.

    Вызывайте эту функцию для записи заданной строки в заданную секцию реестра или .INI файл.

    Записи сохраняются следующим образом:

    • В Windows NT, значение сохраняется в ключ реестра.
    • В Windows 3.xWIN.INI файл.
    • В Windows 95, значение сохраняется в скрытую версию WIN.INI файла.

    Пример:

    CString strSection = "Моя секция";
    CString strStringItem = "Мой строковый элемент";
    CString strIntItem = "Мой целый элемент";

    CWinApp* pApp = AfxGetApp();

    pApp->WriteProfileString(strSection, strStringItem, "test");

    CString strValue;
    strValue = pApp->GetProfileString(strSection, strStringItem);
    ASSERT(strValue == "test");

    pApp->WriteProfileInt(strSection, strIntItem, 1234);
    int nValue;
    nValue = pApp->GetProfileInt(strSection, strIntItem, 0);
    ASSERT(nValue == 1234);
     
     
    « Предыдущая статья   Следующая статья »