당근 1.0의 제작 과정을 처음부터 설명한 설명 문서입니다. 출판사와 협의된 부분까지 원고를 공개하며 나머지는 협의가 완료되는 대로 지속적으로 공개하겠습니다. 다음은 1.0의 실습 예제들입니다.

ApiPractice.zip(9M)

용량상의 문제로 중간 소스 파일들 일부는 싣지 않았습니다.

당근 1.0
제 1 장 프로젝트 소개
1-1.텍스트 편집기
  가.텍스트 포맷
  나.편집기
  다.편집기의 기능
2.프로젝트 소개
  가.실습 과정
  나.준비할 것들
  다.CD-ROM의 구성
  라.실습의 의미
  마.프로그래밍으로의 여행

제2장 문자 입력
1. 문자 입력
  가.키보드와 문자
  나.한글의 입력
  다.DefIme 예제
2. IME
  가.세가지 윈도우
  나.IME 메시지
  다.메시지 살펴보기
3. 조립 문자열
  가.일반 컨텍스트
  나.조립중인 문자 보여주기
  다.예제의 변형
4. 문자열 편집
  가.캐럿 처리
  나.이동 및 삽입
  다.메시지 크래커

제3장 여러 줄 편집
1. 여러 줄 편집
  가.버퍼의 자료 구조
  나.ApiEdit
  다.엔터 입력
  라.유틸리티 함수
2. 줄 정보 조사
  가.GetLine
  나.오프셋
  다.행렬 계산
  라.픽셀 좌표 계산
  마.상하 이동
3. 자동개행
  가.정렬
  나.줄 끝 위치 찾기
  다.설명 가능한 소스
  라.자동개행 지원
  마.금칙 처리
  바.자동개행 상태 변경
4. 수평 위치 보관
  가.PrevX
  나.bLineEnd

제4장 스크롤
1. 스크롤
  가.스크롤바 추가
  나.스크롤바 초기화
  다.스크롤 메시지 처리
  라.키보드 스크롤
  마.PgUp, PgDn
2. 탭
  가.탭문자
  나.탭 출력
  다.탭 관련 함수 수정
  라.구조화

제5장 선택
1. 마우스 선택
  가.마우스로 이동하기
  나.선택 관련 변수
  다.선택영역 표시
  라.마우스로 선택하기
  마.선택중 자동 스크롤
  바.선택영역 관리
2. 반전 선택법
  가.블록 표시 방법
  나.선택영역 확장
  다.두 방법의 비교
3. 키보드 선택
  가.단어 단위 이동
  나.좌우 이동
  다.상하 이동
4. 클립보드
  가.선택영역 삭제
  나.팝업 메뉴
  다.클립보드 처리
  라.단축키

제6장 초기 최적화
1. 문자폭
  가.속도 측정
  나.문자폭 배열
  다.미리 계산된 값
2. 줄 정보 배열
  가.줄 정보
  나.줄 정보 조사
  다.줄 정보 사용
  라.GetLine 최적화
  마.GetPrevOff
3. 깜박임 제거
  가.OnPaint 수정
  나.더블 버퍼링
  다.줄단위 더블 버퍼링
4. 무효영역
  가.무효영역 최소화
  나.삽입 및 삭제시 무효영역 관리
  다.선택시 무효영역 관리
  라.최적화 결과
  마.그외의 최적화

제7장 마진
1. 마진영역
  가.마진영역의 용도
  나.포맷팅영역
  다.관련 함수 수정
  라.탭 관련 코드 수정
  마.클리핑 처리
2. 줄번호 출력
  가.문단번호
  나.마진폭 확장
3. 북마크
  가.북마크 소개
  나.북마크 관련 함수
  다.이동 및 표시
  라.북마크 관리
  마.주유소 이야기
4. 화면 표시
  가.제어문자 보기
  나.현재행 표시
  다.발상의 전환
5. 마우스 액션
  가.더블클릭
  나. 클릭
  다.마진에서의 마우스 처리
  라.커서모양 변경
  마.문자열 드래그
  바.커서 리소스 작성

제8장 큰 파일 편집
1. ApiEdit9
  가.읽기전용
  나.덮어쓰기 모드
  다.무한 메모리
  라.휠 마우스 지원
2. 큰 파일 편집
  가.최적화 준비
  나.조립중의 재정렬 생략
  다.버퍼 길이 유지
3. 정렬 최적화
  가.전방 정렬 생략
  나.후방 정렬 간소화
  다.두 줄 이상의 정렬 포기
  라.다른 정렬 방법
  마.이분검색
  바.최적화 기법의 충돌
4. 버그 수정
  가.드래그중의 문자 입력
  나.덮어쓰기와 캐럿 위치
  다.노운 버그

제9장 컨트롤화
1. 컨트롤화
  가.컨트롤화의 필요성
  나.ShowMsg
  다.윈도우 컨트롤
2. 오브젝트화
  가.오브젝트화
  나.도우미
  다.CShowMsg
  라.컨트롤의 일생
3. ApiEdit 컨트롤화
  가.컨트롤화 방법
  나.ApiEditTest
  다.컨트롤화 후 추가 작업
  라.컨트롤 검증

제10장 파일
1. 당근 프로젝트
  가.코드명 당근
  나.프로젝트의 구성
  다.리소스
  라.미리 컴파일된 헤더
  마.6. 0에서의 프로젝트 구성
  바.Dangeun.cpp
2. 당근 분석
  가.메시지 전담 함수
  나.여분 메모리
  다.차일드 생성
  라.메뉴 관리
3. 파일 입출력
  가.변경 관리
  나.새 문서
  다.텍스트 입출력
  라.파일 열기
  마.파일 저장
  바.명령 항목 관리
4. 파일 관리
  가.미보관 문서 처리
  나.읽기전용 속성 관리
  다.쉘 오픈
  라.최후 상태로 되돌리기
  마.모두 저장
  바.편집 메뉴

제11장 설정
1. 설정 변경
  가.설정
  나.설정값 조사 및 변경
  다.글꼴 변경
  라.색상 변경
  마.기타 옵션
  바.기본 설정
2. 옵션 추가
  가.bUseLineEnd
  나.드래그 허용
  다.캐럿의 폭
  라.현재행 숨기기
  마.탭의 폭
  바.자동개행열 지정
  사.열 표시 선
3. 설정 대화상자
  가.옵션 구조체
  나.옵션 초기화
  다.프로퍼티 시트
  라.일반
  마.보기
  바.색상
  사.편집
4. 설정 값 적용
  가.옵션의 적용
  나.설정 대화상자 호출
  다.개별 윈도우의 옵션
제12장 설정 저장
1. 설정의 저장
  가.설정 저장의 주체
  나.설정 저장 및 복구
  다.위치 저장
2. 최근 파일
  가.기능 소개
  나.CHistory
  다.CMru
  라.최근 파일 기능 구현
3. 일반 설정
  가.처음 열리는 창 최대화
  나.시작 옵션
  다.탐색기 연결
  라.한 번만 실행하기
4. 설정 관리
  가.초기 설정
  나.가변폭 폰트 지원
  다.설치 해제

제13장 취소
1. 취소 레코드
  가.실행 취소
  나.취소 레코드
  다.레코드 초기화
  라.기록 시점
2. 편집 기록
  가.취소 조건
  나.레코드 관리 원칙
  다.삽입 기록
  라.삭제 기록
  마.이동 기록
  바.레코드 관리 함수 호출
3. 취소 및 재실행
  가.취소
  나.재실행
  다.단축키 입력
  라.취소 메뉴 코드
  마.취소 레코드의 상한값
  바.취소 버퍼 크기 지정
4. 변경 관리
  가.필요성
  나.변경 시점 저장
  다.이전 레코드 편집시
5. 편집 그룹
  가.그룹 ID
  나.중첩 처리
  다.그룹의 작성
  라.그룹 정보의 사용

제14장 문법 강조
1. 문법 강조
  가.기능 소개
  나.분석 전략
  다.자료 구조
2. 분석기
  가.분석 기반 클래스
  나.기본 분석기
3. C언어 분석기
  가.C언어 분석기
  나.스타일
  다.한 줄 분석
  라.분석 예
4. 분석기 연결
  가.분석기 관리
  나.분석 결과 출력
  다.재분석
5. 호스트 수정
  가.확장자 연결
  나.분석기 교체
6. 분석기 추가
  가.HTML 분석기
  나.SQL 분석기
  다.일반 분석기
7. 문법 설정
  가.스타일 정보
  나.왜 저렇게 복잡할까?
  다.설정 대화상자

제15장 검색
1. 기본적인 검색
  가.찾기 대화상자
  나.문자열 검색
  다.바꾸기
  라.이전, 이후 찾기
  마.현재 단어 찾기
2. 검색 지원 기능
  가.대화상자의 위치
  나.선택영역의 색상
  다.찾기 바꾸기 전환
  라.검색 관련 옵션
  마.검색 옵션 저장
3. 그 외의 검색 기능
  가.북마크 기능
  나.줄 찾아가기
  다.괄호 짝 찾기
  라.마지막 편집 위치로 가기
4. 파일 검색
  가.검색 결과창
  나.찾기/바꾸기 대화상자
  다.폴더 검색
  라.대화상자 호출
  마.파일에서 찾기
  바.파일에서 바꾸기
5. 파일 검색 지원
  가.찾아가기
  나.검색결과창의 팝업 메뉴
  다.멀티 스레드로 전환

제16장 툴바
1. 창 배치
  가.차일드 만들기
  나.차일드 배치
  다.창 크기 조절
2. 툴바
  가.툴바의 생성
  나.툴팁
  다.버튼의 상태 관리
  라.OnIdle
3. 상태란
  가.통지 메시지
  나.정보 제공
  다.상태란 나누기
  라.검색 실패 메시지
4. 파일창
  가.미니 탐색기
  나.목록 조사
  다.살펴보기 모드
5. 파일탭
  가.파일탭
  나.탭 관리 함수
  다.탭 관리
  라.탭의 메시지 처리
  마.편집 파일의 순서

제17장 편집
1. 문자 변환
  가.대소문자 변환
  나.탭과 공백
  다.불필요한 공백 정리
2. 문단 관리 함수
  가.문단 관리 함수
  나.다른 방식의 함수 집합
  다.문단 관리 함수 사용
3. 들여쓰기
  가.자동 들여쓰기
  나.문법 들여쓰기
  다.블록 들여쓰기
  라.주석 처리
4. 삽입
  가.날짜, 시간 삽입
  나.문자 반복
  다.덧붙이기
  라.Home키 처리
  마.추가된 옵션

제18장 프로젝트
1. 포맷변환
  가.포맷 분석
  나.포맷 변환
  다.ApiEdit와 이진 포맷
  라.포맷 변경
  마.클립보드 처리
  바.문서 정보
2. 네트워크
  가.로컬 네트워크
  나.HTTP 열기
  다.다운로드 대화상자
  라.FTP 서버 관리
  마.FTP 대화상자
  바.FTP 열기
  사.FTP 저장
  아.보안 처리
3. 변경 감시
  가.변경 감시의 필요성
  나.파일 정보의 저장
  다.변경 감시 및 다시 읽기
4. 프로젝트
  가.프로젝트 레코드
  나.프로젝트 관리
  다.프로젝트 파일 열기
  라.프로젝트의 팝업메뉴
  마.프로젝트 새로 고침
  바.프로젝트 목록 저장

제19장 인쇄
1. 컨트롤의 인쇄
  가.인쇄 정보
  나.인쇄 준비
  다.인쇄용 정렬
  라.분석기 수정
  마.페이지 인쇄
2. 당근의 인쇄
  가.인쇄 옵션
  나.인쇄 대화상자
  다.문서 인쇄
  라.머리말, 꼬리말 인쇄
3. 마지막 손질
  가.MDI와 정렬 생략
  나.크기 변경시 첫 문단 유지
  다.시스템 색상 처리
  라.글꼴 미리 생성
  마.옵션 조정
  바.버그 수정
  사.정책 수정
4. 모듈 분할
  가.구조 조정
  나.분할의 이점
  다.Util 모듈
  라.Dangeun 모듈
  마.ApiEdit 모듈
  바.컨트롤 점검
5. 릴리즈
  가.릴리즈
  나.기능 정리
  다.다음 버전 기획


이 강좌의 저작권은 SoEnLab에 있습니다.