수안이의 컴퓨터 연구실

  • Mainpage
  • About Me
  • Tags
  • Metapage
  • Notice
  • Location
  • Keywords
  • Guestbook
  • Admin
  • Write an Article
  • Total | 1695000
  • Today | 745
  • Yesterday | 606

Programming/MFC2007/05/15 09:29

응용 프로그램의 INI 파일 바꾸기

Nov 20 2002 10:21 Written by www.anygate.com


1. 응용 프로그램의 INI 파일 : 표준 INI (standard INI)

Win 95' 이래 INI 파일의 사용은 윈도우즈 레지스트리로 대체되었지만
탐색기로 윈도우즈 디렉토리를 열어보면 *.ini 파일을 많이 볼 수 있는데
그것은 아직도 INI 파일이 사용되고 있다는 얘기다.
윈도우즈 디렉토리에 있는 INI 파일들의 이름은 대개 응용 프로그램의 이름과 같다.
예를들어 넷스케이프를 사용하고 있다면 그곳에서 netscape.ini 파일을 볼 수 있을 것이다.

응용 프로그램의 INI 파일은 보통 윈도우즈 디렉토리에 만들어지며
그 응용 프로그램의 실행에 관련된 정보를 기록하여 두었다가 실행시에 사용하게 된다.
간단한 예를 든다면 툴바의 위치나 응용 프로그램이 최근에 실행될 때의
창의 크기나 상태 그리고 최근에 열었던 파일의 목록등을 기록하는 것이다.

MFC를 사용하여 만든 응용 프로그램에서는 CWinApp 클래스가
응용 프로그램의 INI 파일을 관리하는 몇 개의 멤버함수들을 제공해 주는데
특별한 지시가 없는 한 응용 프로그램의 INI 파일을 대상으로 정보를 기록하거나 읽어오게 되며
응용 프로그램이 처음 실행될 때 윈도우즈 디렉토리에 만들어지게 된다.


2. 읽고 쓰는 함수들

앞서 말했듯이 MFC의 CWinApp 클래스엔 다음과 같은 멤버함수들이 있다.



사용법은 간단하다. 모두 3개씩의 인자를 가지고 있는데
처음 두개중 lpszSection은 섹션명을, lpszEntry는 해당 섹션의 키를 지정한다.
세번째 인자는 읽는 함수들의 경우 INI 파일이 없거나 있더라도
지정된 섹션이나 키가 없을경우 기록된 값 대신 사용할 디폴트 값이며
쓰는 함수들의 경우엔 해당 키에 기록할 값을 넣어주면 된다.
함수들의 리턴값은 쓰는 함수들의 경우 쓰기가 성공하면 '0'이 아닌 값,
실패하면 '0'이 되고 읽는 함수들의 경우 읽어낸 또는
디폴트로 지정한(읽기를 실패한 경우) 정수 또는 문자열이다.

※ 참고:
값을 기록하기 위해 지정한 섹션이나 키가 존재하지 않는다면 새로 만들어진다.
만약 이미 만들어진 섹션이나 키를 지우려면 WriteProfileString() 함수의
세번째 인자로 NULL을 지정하면 된다. 그리고 섹션이나 키 네임은 대소문자를 구분하지 않는다.


3. 지정된 INI 파일 바꾸기

CWinApp 클래스의 데이터 멤버 중엔 m_pszProfileName이 있는데
바로 이 변수에 응용 프로그램이 사용할 INI 파일명이 담겨 있다.



만약 응용 프로그램이 사용할 INI 파일의 경로나 이름을 바꾸고 싶다면
이 변수에 원하는 경로와 파일명을 넣어주면 되는데 그 전에 해야할 일이 있다.

m_pszProfileName은 위에 보인대로 char형 포인터 변수이다.
응용 프로그램이 시작되고 CWinApp 가 생성되면 이 변수가 가리키는 문자열을 저장할 메모리는
힙 상에 동적으로 할당된다. 따라서 새로 문자열을 지정하려면 먼저 이전에 할당된 메모리를 해제하고
다시 메모리를 할당해야 한다.
다음이 그 과정이다.



첫번째 메모리 할당은 CWinApp 클래스의 InitInstance()가 실행되기 전에 이루어지므로
다시 지정하기 위한 위의 두 줄은 InitInstance() 멤버에 넣어주면 될 것이다.
이 때 주의할 점은 만약 InitInstance()에 응용 프로그램의 INI 파일을 사용하는 코드가 있다면
그 코드의 앞에서 재지정이 이루어져야 한다는 것이다.
그렇지 않을 경우엔 당연히 INI 파일에서 쓰거나 읽은 데이터가 엉뚱한 것이 될 수도 있다.
예를든다면, InitInstance() 함수엔 응용 프로그램이 최근에 열었던 파일목록을 읽어오기 위해
CWinApp 클래스의 LoadStdProfileSettings() 멤버를 둘 수 있는데
이 함수가 호출된 뒤에 응용 프로그램의 INI 파일을 바꾸어버리면
응용 프로그램을 종료할 때 다시 기록되는 최근 파일목록은 어떻게 변경되든 상관없이
다시 프로그램이 실행될 때 읽혀지지 않을 것이다.
"MFC" 카테고리의 다른 글
  • CFile 클래스를 이용한 파일 I/O (0)2007/05/15
  • WaitForSingleObject() 에 의한 Thread 동기화 (0)2007/05/15
  • 응용 프로그램의 INI 파일 바꾸기 (0)2007/05/15
  • Thread (쓰레드) 란 ? (3)2007/05/15
  • Using User-Interface Threads (0)2007/04/29
2007/05/15 09:29 2007/05/15 09:29
Posted by webdizen
Tags INI, INI 파일
No Trackback No Comment

Trackback URL : http://www.webdizen.net/blog/trackback/2953

Leave your greetings.

[로그인][오픈아이디란?]

«Prev  1 ... 300 301 302 303 304 305 306 307 308 ... 3009  Next»

RSS HanRSS
Blog Image
webdizen
이곳은 컴퓨터에 대해 연구하고, 공유하고, 소통하기 위한 연구실입니다. 개인적으로는 OLAP, Data Mining, Semantic Web, Data Modeling에 대해서 연구하고 있습니다.

Categories

전체 (3009)
Webdizen (141)
Life (6)
Diary (16)
Blog (9)
IDEA (2)
Travel (10)
Book (16)
Photo (7)
Movie (8)
Music (14)
Leisure Sports (10)
Funny (6)
Hardware (121)
Software (120)
Windows (5)
Unix & Linux (120)
Installation (5)
Kernel (10)
System (34)
Develop (22)
X-Window (0)
Applicaton (31)
Security (4)
Framework (2)
Hadoop (2)
Programming (804)
Algorithm & Data Structure (1)
Assembly (38)
UNIX/Linux C (95)
C++ (128)
STL (4)
Java (38)
Win32 API (92)
ATL/COM (44)
MFC (151)
.NET (26)
WCF/WPF (4)
C# (28)
Network Programming (17)
Database Programming (12)
OpenGL / DirectX (13)
Multimedia Programming (0)
Game Programming (21)
Parallel Distributed Progra... (0)
Reverse Engineering (0)
Debugging (9)
Python (1)
Ruby (1)
Ruby on Rails (1)
QT (4)
GTK (0)
JSP (0)
PHP (6)
ASP.NET (6)
ASP (2)
Development (28)
Useful Library (2)
Data Modeling (0)
Database (105)
Oracle (4)
MSSQL (41)
MySQL (2)
Data Warehouse (2)
Data Mining (4)
Network (66)
Web (79)
DHTML (4)
XHTML (1)
Javascript (1)
CSS (1)
AJAX (9)
XML (11)
Flex (1)
Silverlight (3)
Security (91)
DoS (1)
Kernel (10)
Scanning (3)
Sniffing (0)
Spoofing (4)
Overflow (28)
Web (11)
Shell (10)
Format String (14)
Window (2)
Embedded (70)
Multimedia (27)
Mobile (14)
Graphic (24)
Management (633)
Knowledge (581)
Hadoop (0)

Notice

  • 메타 블로그 사이트에 등록
  • 새해 맞이 블로그의 변화
  • 블로그 명칭 변경
  • 도메인(www.webdizen.net) 구...
  • TEXTCUBE 1.6.1로 업그레이드...

Tags

  • Windows Server 2008
  • Network Auto-Tuning
  • 소교
  • GPO
  • Scanner
  • 아바타
  • 데이터베이스
  • System
  • 예측 모델링
  • 콜 레퍼런스
  • RADIUS
  • FastCGI
  • 헤네지 XO
  • Jelix
  • 뉴욕타임즈
  • 클립보드
  • 습관
  • stty
  • 한국과학기술원
  • 정보 시스템

Recent Articles

  • 트위터(Twitter)의 시작!.
  • 청년 리더의 조건.
  • 애플의 타블렛 PC - 아이패드....
  • 미래의 인터페이스 - 육감 기....
  • 기초발성법 동영상 강좌.

Recent Comments

  • 경청... 너무나 중요한데.......
    webdizen 14:59
  • 학교 과제물중 쓰레드에 대하....
    장진혁 03/17
  • 관리자만 볼 수 있는 댓글입....
    비밀방문자 03/12
  • 상대방의 이야기를 열심히 경....
    DoNuts 03/03
  • 좋은글 잘 보고 갑니다..
    Und_hacker 01/08

Recent Trackbacks

  • printf,scanf를 이용한 형식....
    yundream의 프로그래밍 이야기 03/10
  • 파일 열기/저장하기 CFileDialog.
    은마군의 나태블록 2009
  • World IT Show 2008.
    상우 :: Oranzie's BLOG 2008
  • cvs서버 설치하기.
    3인3색 2008
  • 속속 공개되는 Google Chart....
    PHP와 Web 2.0 2007

Archive

  • 2010/02 (1)
  • 2010/01 (6)
  • 2009/12 (5)
  • 2009/09 (3)
  • 2009/08 (1)

Calendar

«   2010/03   »
일 월 화 수 목 금 토
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

Bookmarks

    • Administration
      • IIS.NET
      • NTFAQ
      • OS의 모든 것
      • 리눅스포털
    • Database
      • SQL Server Central
      • SQL Team
    • Development
      • .NET Heaven
      • ASP Alliance
      • ASP.NET 2.0
      • Bullog.net
      • C# Corner
      • C++ (C PlusPlus.com)
      • C++ Reference
      • CodeGuru
      • CodePlex
      • DebugLab
      • Dev Articles
      • Devpia
      • DotNet Junkies
      • DotNet Zone
      • Driver Online
      • GOSU.NET
      • HOONS 닷넷
      • Joinc 팀블로그
      • KOSR
      • MSDN Home Page
      • OSR Online
      • Sky.ph - 개발자 커뮤니...
      • TAEYO.NET
      • The Code Project
      • WindowsClient.net
      • 김상욱의 개발자 Side
      • 조인시 위키
    • Human Networks
      • belief21c's e-space
      • I think I can
      • Invisible Rover's Blog :D
      • Polarux - Linuxing
      • Rodman®
      • 까만 나비
      • 나를 가꾸는 시간.
      • 단녕
      • 상우 :: Oranzie's BLOG
    • Information Technology
      • Microsoft TechNet
      • 지디넷코리아 - 글로벌...
    • Security
      • FoundStone
      • milw0rm
      • NewOrder
      • OpenRCE
      • Phrack.org
      • Reverse Engineering b1...
      • Reverse Engineering Team
      • RootKit
      • SecurityFocus
      • SecurityXploded by Nag...
      • Wow Hacker
      • Zone-H
Textcube
Louice Studio Inc.
Powered by Textcube. Original designed by Tistory.