Функції для роботи з реєстром h2>
розбирався, недавно, з функціями що дозволяють працювати
з реєстром Windows. Знайшов ряд функцій-членів класу CWinApp: SetRegistryKey,
GetProfileInt, GetProfileString, WriteProfileInt, WriteProfileString. Якщо комусь цікавий переклад MSDN'овского хелп до цих
функцій - то його можна знайти тут. p>
CWinApp:: SetRegistryKey p>
void
SetRegistryKey (LPCTSTR lpszRegistryKey); p>
void
SetRegistryKey (UINT nIDRegistryKey); p>
Параметри p>
lpszRegistryKey p>
Покажчик на рядок містить ім'я ключа реєстру. p>
nIDRegistryKey p>
ID/індекс ключа в реєстрі. p>
Опис p>
Примушує додаток зберігати установки в реєстр
замість INI файлів. Ця функція встановлює m_pszRegistryKey, яка потім
використовується в наступних функціях-членах CWinApp: GetProfileInt,
GetProfileString, WriteProfileInt, and WriteProfileString. Якщо ця функція
була викликана, список недавно використовуваних файлів (list of most recently-used --
MRU) також зберігається в реєстрі. Ключ реєстру зазвичай є ім'ям компанії.
Ключ реєстру має такий вигляд: HKEY_CURRENT_USERSoftware. P>
CWinApp:: GetProfileInt p>
UINT GetProfileInt (
LPCTSTR lpszSection, LPCTSTR lpszEntry, int nDefault); p>
що повертається значення p>
Якщо функція успішно відпрацювала - ціле значення
рядки певного запису. Повертає значення - значення параметра nDefault
якщо функція не знайшла записи. Повертає значення - 0, якщо значення яке
відповідає заданій записи не ціле. p>
Ця функція підтримує шістнадцяткову нотацію для
значень у. INI файлі. Коли ви отримуєте знакове ціле, ви повинні перевести
значення в int. p>
Параметри p>
lpszSection p>
Покажчик на рядок завершену нулем яка
визначає секцію, яка містить запис у реєстрі. p>
lpszEntry p>
Покажчик на рядок завершену нулем, яка
містить запис, значення якої буде повернуто. p>
nDefault p>
Визначає значення за замовчуванням для повернення, якщо
система не зможе знайти запис. Це значення може бути беззнакові цілим
(unsigned) в діапазоні від 0 до 65,535 або знаковим (signed) в діапазоні від
-32,768 До 32,767. P>
Опис p>
Викликайте цю функцію для отримання цілого значення
запису з певної секції з реєстру або. INI файлу. p>
Записи зберігаються таким чином: p>
У Windows NT, значення зберігається в ключ реєстру. p>
У Windows 3.x, значення зберігається в WIN.INI файл. p>
У Windows 95, значення зберігається в приховану версію
WIN.INI файлу. p>
Ця функція не чутлива до регістру букв, таким
чином, рядки в параметрах lpszSection і lpszEntry можуть використовувати букви
різного регістра. p>
CWinApp:: GetProfileString p>
CString
GetProfileString (LPCTSTR lpszSection, LPCTSTR lpszEntry, LPCTSTR lpszDefault =
NULL); p>
що повертається значення p>
що повертається значення - рядок із.INI файлу програми
або lpszDefault якщо рядок не знайдено. Максимальна довжина рядка, який
підтримує система, визначена в _MAX_PATH. Якщо lpszDefault одно NULL,
повертається значення - порожній рядок. p>
Параметри p>
lpszSection p>
Покажчик на рядок завершену нулем яка
визначає секцію яка містить запис у реєстрі. p>
lpszEntry p>
Покажчик на рядок завершену нулем, яка
містить запис, рядок з якої буде повернута. Це значення не має
дорівнювати NULL. p>
lpszDefault p>
Покажчик на значення рядка за умовчанням для заданої
запису якщо запис не знайдено в ініціалізує (INI) файлі. p>
Опис p>
Викликайте цю функцію для отримання рядки пов'язаної з
записом в заданій секції реєстру програму або. INI файлу. p>
Записи зберігаються таким чином: p>
У Windows NT, значення зберігається в ключ реєстру. p>
У Windows 3.x, значення зберігається в WIN.INI файл. p>
У Windows 95, значення зберігається в приховану версію
WIN.INI файлу. p>
Приклад p>
CString strSection = "Моя секція"; p>
CString strStringItem = "Мій строковий
елемент "; p>
CString strIntItem
= "Мій цілий елемент"; p>
CWinApp * pApp =
AfxGetApp (); p>
pApp-> WriteProfileString (strSection,
strStringItem, "test "); p>
CString strValue; p>
strValue =
pApp-> GetProfileString (strSection, strStringItem); p>
ASSERT (strValue ==
"test "); p>
pApp-> WriteProfileInt (strSection,
strIntItem, 1234); p>
int nValue; p>
nValue =
pApp-> GetProfileInt (strSection, strIntItem, 0); p>
ASSERT (nValue ==
1234); p>
CWinApp:: WriteProfileInt p>
BOOL
WriteProfileInt (LPCTSTR lpszSection, LPCTSTR lpszEntry, int nValue); p>
що повертається значення p>
Не 0 у разі вдалого виклику функції, інакше 0. p>
Параметри p>
lpszSection p>
Покажчик на рядок завершену нулем, яка
визначає секцію, що містить запис. Якщо секція не знайдена, вона створюється.
Назва секції не залежить від регістру; рядок може поєднувати як великі, так і
прописні літери. p>
lpszEntry p>
Покажчик на рядок завершену нулем, яка
містить запис, в яку буде записано значення. Якщо запис не знайдено в
заданій секції, вона створюється. p>
nValue p>
Містить значення для запису. p>
Опис p>
Викликайте цю функцію для запису заданого значення в
задану секцію реєстру або. INI файл. p>
Записи зберігаються таким чином: p>
У Windows NT, значення зберігається в ключ реєстру. p>
У Windows 3.x, значення зберігається в WIN.INI файл. p>
У Windows 95, значення зберігається в приховану версію
WIN.INI файлу. p>
Приклад p>
CString strSection = "Моя секція"; p>
CString strStringItem = "Мій строковий
елемент "; p>
CString strIntItem
= "Мій цілий елемент"; p>
CWinApp * pApp =
AfxGetApp (); p>
pApp-> WriteProfileString (strSection,
strStringItem, "test "); p>
CString strValue; p>
strValue =
pApp-> GetProfileString (strSection, strStringItem); p>
ASSERT (strValue ==
"test "); p>
pApp-> WriteProfileInt (strSection,
strIntItem, 1234); p>
int nValue; p>
nValue =
pApp-> GetProfileInt (strSection, strIntItem, 0); p>
ASSERT (nValue ==
1234); p>
CWinApp:: WriteProfileString p>
BOOL
WriteProfileString (LPCTSTR lpszSection, LPCTSTR lpszEntry, LPCTSTR lpszValue
); p>
що повертається значення p>
Не 0 у разі вдалого виклику функції, інакше 0. p>
Параметри p>
lpszSection p>
Покажчик на рядок завершену нулем, яка
визначає секцію, що містить запис. Якщо секція не знайдена, вона створюється.
Назва секції не залежить від регістру; рядок може поєднувати як великі, так і
прописні літери. p>
lpszEntry p>
Покажчик на рядок завершену нулем, яка
містить запис, в яку буде записано значення. Якщо запис не знайдено в
заданій секції, вона створюється. p>
lpszValue p>
Покажчик на рядок, призначену для запису. Якщо
цей параметр NULL, запис певна параметром lpszEntry видаляється. p>
Опис p>
Викликайте цю функцію для запису заданої рядки в
задану секцію реєстру або. INI файл. p>
Записи зберігаються таким чином: p>
У Windows NT, значення зберігається в ключ реєстру. p>
У Windows 3.x, значення зберігається в WIN.INI файл. p>
У Windows 95, значення зберігається в приховану версію
WIN.INI файлу. p>
Приклад p>
CString strSection = "Моя секція"; p>
CString strStringItem = "Мій строковий
елемент "; p>
CString strIntItem
= "Мій цілий елемент"; p>
CWinApp * pApp =
AfxGetApp (); p>
pApp-> WriteProfileString (strSection,
strStringItem, "test "); p>
CString strValue; p>
strValue =
pApp-> GetProfileString (strSection, strStringItem); p>
ASSERT (strValue ==
"test "); p>
pApp-> WriteProfileInt (strSection,
strIntItem, 1234); p>
int nValue; p>
nValue =
pApp-> GetProfileInt (strSection, strIntItem, 0); p>
ASSERT (nValue == 1234); p>
Ну от загалом і все. Якщо є які-небудь зауваження
і побажання - пишіть - [email protected] p>
Список літератури h2>
Для підготовки даної роботи були використані
матеріали з сайту http://www.realcoding.net/
p>