Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 2 [3]  Все   Вниз
  Печать  
Автор Тема: доступ к элементам меню  (Прочитано 59427 раз)
0 Пользователей и 4 Гостей смотрят эту тему.
Джон
просто
Администратор

de
Online Online
Пол: Мужской

« Ответ #60 : 28-07-2004 14:03 » 

Цитата: Алексей1153
Джон - я как маленький ребёнок, чем больше объясняешь, тем больше у меня вопросов Улыбаюсь


Это показывает, что ты что-то понял. Не помню кто, но кто-то увольнял сотрудников, если они после получения задания не задавали вопросов.

К вопросу:

Это прелести MFC. Посмотри application class, короче который public CWinApp. Там есть такая ф-я OnInitInstance в ней найдёшь SetRegistryKey() - параметр можешь установить сам например

SetRegistryKey(_T("MyFirstProg"));

После этого в registry будет создан след. ключ
HKEY_CURRENT_USER\Software\MyFirstProg

Эта инфа будет сохранена во внутренней структуре CWinApp.

Вызов ф-ии
WriteProfileString("ModelessDlg","Position",stPos)
создаст ключ
HKEY_CURRENT_USER\Software\MyFirstProg\ModelessDlg
с полем

Position = stPos
а ф-я

GetProfileString("ModelessDlg","Position")
соответсвенно вернёт строку, содержащую значение этого поля.

Можно использовать для всего чего угодно.

Такм же макаром, сохраняются позиции тулбаров и др. окон при закрытии проги.

Я что-то не помню где я про " Section и Entry " написал - напомни.

Вообще-то, Section - это путь, а Entry - это поле данных.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #61 : 28-07-2004 17:57 » 

супер Улыбаюсь


 :arrow:
Цитата

Я что-то не помню где я про " Section и Entry " написал - напомни.

ты не писал - это я про них писал Ага
Да это VC такой список параметров этоу функции показал.

зы. у тебя колобайт сообщений намечается Ага
Записан

Джон
просто
Администратор

de
Online Online
Пол: Мужской

« Ответ #62 : 29-07-2004 08:16 » 

Цитата: Алексей1153
зы. у тебя колобайт сообщений намечается Ага


Ну дык, готовимся.  Ага  Хотя в HEX, уже за 4 тысячи перевалило.
Так и хочется сказать "А в хексах я гораздо ддиннее!"
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Anti_G
Гость
« Ответ #63 : 29-07-2004 11:34 » new

Алексей1153,
WriteProfileString и GetProfileString - это воспоминания от старых времен. Дело в том, что эти функции в Win95 и Win3.x работают с файлом WIN.INI.

Например,
[MySection]
MyEntry = somevalue

А сейчас  они пишут в реестр.
Записан
Джон
просто
Администратор

de
Online Online
Пол: Мужской

« Ответ #64 : 29-07-2004 13:17 » 

Anti_G,  Не совсем так. Это функции - враперы для соответствующих ф-ий API. Рассмотрим в качестве примера WriteProfileString  - её код:

Код:
BOOL CWinApp::WriteProfileString(LPCTSTR lpszSection, LPCTSTR lpszEntry,
LPCTSTR lpszValue)
{
ASSERT(lpszSection != NULL);
if (m_pszRegistryKey != NULL)
{
LONG lResult;
if (lpszEntry == NULL) //delete whole section
{
HKEY hAppKey = GetAppRegistryKey();
if (hAppKey == NULL)
return FALSE;
lResult = ::RegDeleteKey(hAppKey, lpszSection);
RegCloseKey(hAppKey);
}
else if (lpszValue == NULL)
{
HKEY hSecKey = GetSectionKey(lpszSection);
if (hSecKey == NULL)
return FALSE;
// necessary to cast away const below
lResult = ::RegDeleteValue(hSecKey, (LPTSTR)lpszEntry);
RegCloseKey(hSecKey);
}
else
{
HKEY hSecKey = GetSectionKey(lpszSection);
if (hSecKey == NULL)
return FALSE;
lResult = RegSetValueEx(hSecKey, lpszEntry, NULL, REG_SZ,
(LPBYTE)lpszValue, (lstrlen(lpszValue)+1)*sizeof(TCHAR));
RegCloseKey(hSecKey);
}
return lResult == ERROR_SUCCESS;
}
else
{
ASSERT(m_pszProfileName != NULL);
ASSERT(lstrlen(m_pszProfileName) < 4095); // can't read in bigger
return ::WritePrivateProfileString(lpszSection, lpszEntry, lpszValue,
m_pszProfileName);
}
}

Если переменная m_pszRegistryKey не установлена (вызов SetRegistryKey() )
то вызывается API ф-я:
::WritePrivateProfileString(lpszSection, lpszEntry, lpszValue,m_pszProfileName);

Последний параметр - имя INI файла, который можно использовать и сейчас.

Для этого достаточно - выключить вызов SetRegistryKey()  и проиннициаллизировать переменную m_pszProfileName :  

в конструкторе:
free((void*)m_pszProfileName);
m_pszProfileName=_tcsdup(_T("d:\\MyFirstProg.ini"));

деструктор позаботится об освобождении памяти

тогда вызов
WriteProfileString("ModelessDlg","Position",stPos)

создаст файл d:\\MyFirstProg.ini и запишет в него

[ModelessDlg ]
Position="Содержимое переменной stPos"

Иногда удобнее пользоватся файлами вместо реестра. Но размер INI файлов ограничен по-моему до 64К, или это было под 95 виндой? Точно не помню.
« Последнее редактирование: 23-11-2007 17:58 от Алексей1153++ » Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Страниц: 1 2 [3]  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines