WritePrivateProfileString와 GetPrivateProfileString 함수는 API이며 .ini파일을 생성 및 저장/로드 할 수 있다.


BOOL WINAPI WritePrivateProfileString(
  _In_ LPCTSTR lpAppName,
  _In_ LPCTSTR lpKeyName,
  _In_ LPCTSTR lpString,
  _In_ LPCTSTR lpFileName
);

lpAppName : 섹션 이름(그룹)

lpKeyName : 키(hash-key와 비슷)

lpString : 키에 대응되는 값

lpFileName : ini파일의 경로


DWORD WINAPI GetPrivateProfileString(
  _In_  LPCTSTR lpAppName,
  _In_  LPCTSTR lpKeyName,
  _In_  LPCTSTR lpDefault,
  _Out_ LPTSTR  lpReturnedString,
  _In_  DWORD   nSize,
  _In_  LPCTSTR lpFileName
);

lpAppName : 섹션 이름(그룹)

lpKeyName : 키(hash-key와 비슷)

lpDefault : 키를 찾지 못했을 경우 얻는 값

lpReturnedString : ini파일에서 해당 키를 통해 받아올 텍스트의 버퍼

nSize : 버퍼의 크기

lpString : 키에 대응되는 값

lpFileName : ini파일의 경로



키는 ini파일 상에 존재하지만 값은 존재하지 않을 경우 해당 값은 어떻게 될까?


1. SIZE= 상태로 존재할 경우

 - buffer에 NULL값이 들어간다.


[BASE]

SIZE=

DELAY=0


SIZE 출력시 아무것도 보이지 않는다 = NULL


2. SIZE 상태로 존재할 경우

 - 키가 없다고 간주하여 buffer에 디폴트 문자열이 들어간다.


[BASE]

SIZE

DELAY=0


SIZE 출력시 디폴트 문자열이 출력된다.


https://msdn.microsoft.com/ko-kr/library/windows/desktop/ms725501(v=vs.85).aspx

https://msdn.microsoft.com/ko-kr/library/windows/desktop/ms724353(v=vs.85).aspx

'WIN32-MFC' 카테고리의 다른 글

[MFC] 현재 시간 가져오기  (0) 2016.12.02
[MFC] main함수의 위치는?  (0) 2016.11.23
[WIN32] 외부 링크 오류 해결  (0) 2016.11.22
[WIN32] LPSTR->LPCWSTR 임시로 고쳐놓은 것  (0) 2016.11.22
[WINAPI] 오류 해결  (0) 2016.11.21

1
2
3
4
5
6
7
8
9
10
11
time_t timer = time(NULL);    //현재 시스템 시간 가져오기
tm calTime;
localtime_s(&calTime, &timer);    //받아온 현재 시스템 시간을 변환
 
CString time_current;
time_current.Format(_T("%d_%d_%d %d;%d;%d"), 
                                            calTime.tm_year+1900
                                            calTime.tm_mon+1, calTime.tm_mday, 
                                            calTime.tm_hour, 
                                            calTime.tm_min, 
                                            calTime.tm_sec);
cs


https://msdn.microsoft.com/ko-kr/library/w4ddyt9h.aspx

http://mwultong.blogspot.com/2007/05/c-localtimes-visual-c-2005.htm

MFC 처음 생성했을 때 당황했다

어딜봐도 main함수가 보이질 않는다ㅠㅠㅠㅠ

빌드해서 실행시켜보면 대화상자 잘 뜨는데(대화상자기반으로 만듦)ㅠㅠㅠㅠ

브레이크 걸고 디버그 해봤더니 winmain.cpp 에서 int AFXAPI AfxWinMain이 실행됐

MFC는 WinMain()의 코드를 수정할 수 없다고 한다

초기화 관련 코드들은 대부분 InitInstance()에서 수행하도록 하는 듯


- 응용 프로그램의 설정 정보 로딩(ex: 윈도우 크기, 옵션, 스타일 등)
- 응용 프로그램 중복 실행 방지
- 시험 버전의 기간 검사 루틴
- 운영체제 버전의 확인과 프로그램 실행 허용 여부 결정
- 프로그램 사용자의 인증
- 프로그램 실행 시 인자로 전달되는 파라미터 처리 


와 같은 처리를 수행하기 좋다고 함!




SDK가 64비트 전용이었는데 난 32비트로 컴파일 하고 있었다

당연히..안됨...


64비트로 컴파일 하니 해결!

디버그 옆에 있는 드롭박스에서 변경할 수 있다ㅠㅠ

프로젝트 속성 - 구성 속성 - 일반 - 문자 집합 을 유니코드에서 멀티 바이트로 고쳐주었음

(Properties - Configuration Properties - General - Character Set)

그러니까 LPSTR 타입에서 LPCWSTR 타입으로 변환할수 없다고 하는 에러 뜨던 것이 사라짐


후에 변경할 것

'WIN32-MFC' 카테고리의 다른 글

[MFC] WritePrivateProfileString / GetPrivateProfileString  (0) 2017.05.15
[MFC] 현재 시간 가져오기  (0) 2016.12.02
[MFC] main함수의 위치는?  (0) 2016.11.23
[WIN32] 외부 링크 오류 해결  (0) 2016.11.22
[WINAPI] 오류 해결  (0) 2016.11.21

라이브러리를 사용할 계기가 생겨서 적용시켜보는데 자꾸 실패했다

희안한 오류만 나왔다

세미콜론이 없다/링크 사양을 사용할 수 없다 등등 같은

밑의 에러 종류는 error C2146/error C4430/error C2061 등으로 다양했음

에러 발생 위치는 모든 함수들(정확히 말하면 MINE_APIENTRY를 반환하는 모든 함수)


외부 라이브러리 사용법에 문제가 있는지 찾아보고 3가지 방법을 사용해보았는데 다 실패했다

1. .dll을 시스템에 넣고 .lib랑 .h를 해당 프로젝트 폴더에 넣기

2. VC++ 디렉터리에서 포함 디렉터리(.h)랑 라이브러리 디렉터리(.lib)에 해당 파일들 경로 넣어주기

3. C/C++-일반-추가 포함 디렉터리(.h)와 링커-일반-추가 라이브러리 디렉터리(.lib)에 해당 파일 경로 넣어주고 링커-입력-추가 종속성에 해당 .lib 추가하기


하루 종일 고민했는데

#define   MINE_APIENTRY   extern "C" int WINAPI 이 문장의 WINAPI 때문에 오류 발생

헤더 추가할 때 #include <windows.h> 이거 하나 없어서 오류났던 것


저 헤더가 없으면 WINAPI가 인식이 안되면서 온갖 에러를 뱉어낸다


친구가 예전에 using namespace std; 안써서 오류 700개 봤다 그랬을 때 엄청 웃었는데 웃을 처지가 아니었다


++아니..콘솔 응용으로 개발하는게 아니라 WIN32로 개발해야 되는거였다..아..

화이팅..공부...합시다...

+ Recent posts