본문 바로가기
C & C++/C & C++

레지스터리 값 저장하고 가져오기

by izen8 2011. 10. 31.
반응형


윗그림처럼 보통 메신저나 사이트를 보면 로그인화면에 체크박스에 "ID저장" 이라는 부분이 있는데

그걸 체크하면 재실행시 에디트창에 아이디가 남아있다..

MFC같은경우는 방법이 몇가지있는데, 레지스트리를 이용해서 저장,읽기를

GetProfileString,WriteProfileString를 사용해서 구현해보자!!

 

처음에 레지스트리를 셋팅을 해야하는데

XXXApp의 InitInstance()를 보면

SetRegistryKey(_T("Local AppWizard-Generated Applications"));

라고  디폴트로 설정해있는데 이번엔 이걸 그대로 사용하겠다...

------------------------------------------------------------------------------------------

ID를 입력하는 에디트창을  m_idedit 라는 이름으로 value형 변수로 우선 추가한다...

 

여기서

체크박스를 체크하고 로그인했을경우의 처리를 WriteProfileString를 사용한다.

 

우선 코드를 보자

 

CString id = m_idedit;

CButton *pButton = (CButton*)GetDlgItem(IDC_CHECK1);

    switch(pButton->GetCheck())
    {
    case 0:
      UpdateData(TRUE);     //체크안될때는 공백을 기록
                  AfxGetApp()->WriteProfileString(_T("Settings"),_T("m_idedit2"),_T(""));
    case 1:
      UpdateData(TRUE);    //체크됐을때 id값을 레지스트리에 기록
                  BOOL bbb=AfxGetApp()->WriteProfileString(_T("Settings"),_T("m_idedit2"),id);
    }

체크가 됐을때 처리가 진행돼면 Settings의 m_dedit2라는 이름에 id값이 레지스트리에 등록된다..

 

예를 들어서 체크를 하고 ID에디트창에 zard라는 값으로 로그인했다고 치자... 

그러면 실제로 레지스트리에 등록됐는지 regedit를 실행해서 보자..

 

 

보면 HKEY_CURRENT_USER -> Sosftware -> Local AppWizard-Generated Applications -> 

       demo2 -> Settings 의 m_idedit2에다가 입력한 zard 라는값이 레지스트리에 잘 등록됐다... 

demo2는 프로젝트명이니까 각자 다를수있다...

------------------------------------------------------------------------------------------

그리고 실행할때 레지스트리의 값을 불러올때는

OnInitDialog()같은 초기화함수에

 

m_idedit = AfxGetApp()->GetProfileString(_T("Settings"),_T("m_idedit2"),_T("")); 
UpdateData(FALSE);

 

추가하면 실행시 레지스트리의 Settings의 m_idedit2의 값을 m_idedit에다가 뿌려준다..

반응형

댓글