Premnath Mali Ответов: 3

Как сохранить значения флажков в реестре


У меня есть 6 флажков, и я хотел сохранить значение в реестре при закрытии приложения и установить его обратно при запуске приложения. как мне это сделать?..

Что я уже пробовал:

	//These are the check boxes on the child dialog Settings
BOOL m_chkAddStudentVal;
	BOOL m_chkUpdateStudentVal;
	BOOL m_chkDeleteStudentVal;
	BOOL m_chkAddTeacherVal;
	BOOL m_chkUpdateTeacherVal;
	BOOL m_chkDeleteTeacherVal;


typedef struct {
		void Set(int* _chkBoxes[],CWnd* settingwindow, int nFlag=1)
		{
//Here I want to restore saved data from registry
			settingwindow->UpdateData();
			for(int i=0; i<6; i++)
			{
				chkBoxes[i]=_chkBoxes[i];
				*chkBoxes[i]=nFlag;
			}
			settingwindow->UpdateData(FALSE);
		}
		int* chkBoxes[6];
	}CHKSETTINGS;
	CHKSETTINGS m_chkSettings;


void CDialogControlDlg::OnExit()
	{
// Here My main application is going to close so here I want to save status of the check boxes to the registry
		m_setWindows.DeleteWindows();
		Shell_NotifyIcon(NIM_DELETE,&niData);
		exit(0);
	}

3 Ответов

Рейтинг:
22

Jochen Arndt

Когда вы создадите новый проект MFC, вам будет предложено SetRegistryKey() размещено по адресу InitInstance Измените строку на название вашей компании. При этом для настройки профиля будет использоваться реестр, а не INI-файлы. Используемые пути в реестре будут HKCU\Software\<company_name>\<application_name>.

Тогда просто используйте CWinApp Получить и установить функции профиля. Чтобы вызвать их из других классов, кроме вашего CWinApp использование производного класса AfxGetApp():

// Save
AfxGetApp()->WriteProfileInt(_T("Settings"), _T("AddStudent"), m_chkAddStudentVal);

// Restore
m_chkAddStudentVal = AfxGetApp()->GetProfileInt(_T("Settings"), _T("AddStudent"), 0) ? 1 : 0;

Выберите соответствующий раздел и ключевые имена. Я использовал "настройки" в качестве названия раздела, потому что он обычно хранит последние настройки при завершении программы.


Рейтинг:
19

CPallini

Здесь в CodeProject вы можете найти лоф статьи о чтении / записи значений из / в реестр[^].

Вы также можете использовать Функция WriteProfileString (Windows)[^] для такой цели.


Рейтинг:
0

Richard MacCutchan

Использование реестра в настоящее время, как правило, не рекомендуется. Есть лучшие способы сохранить информацию о приложении, если вы не используете базу данных. Видеть Где я должен хранить свои данные?[^] автор: OriginalGriff.