http://dis.dankook.ac.kr/lectures/hci07/entry/SimpleMDI-예제
http://dis.dankook.ac.kr/lectures/hci07/entry/SimpleSplitter-예제
lecture10-ch10
SimpleDialog 예제
lecture9-ch9
SimpleControls 예제
버튼 콘트롤
http://dis.dankook.ac.kr/lectures/hci07/entry/ExButton-예제
http://dis.dankook.ac.kr/lectures/hci07/entry/ExButton2-예제
정적 콘트롤
http://dis.dankook.ac.kr/lectures/hci07/entry/ExStatic-예제
편집 콘트롤
http://dis.dankook.ac.kr/lectures/hci07/entry/ExEdit-예제
리스트박스 콘트롤
http://dis.dankook.ac.kr/lectures/hci07/entry/ExListBox-예제
스크롤바 콘트롤
http://dis.dankook.ac.kr/lectures/hci07/entry/ExScrollBar-예제
서브클래싱 (Subclassing)
-CLetterEdit (레터만 입력받을 수 있는)과 CNumberEdit (숫자와 하이픈만 입력받을 수 있는) 클래스를 구현하여 사용하는 예
1326294757.zip
메시지반사 (Message Reflection)
-CMyListBox 클래스에서 항목을 더블클릭했을때 자신이 통지 메시지를 처리하는 예
1098596210.zip
The art of subclassing
lecture8-ch8
실습숙제 4 (Due by 11/14)
□ 단원 : 사용자 인터페이스 & 파일입출력
□ 목표 : 메뉴 아이템 및 툴바 추가 연습 & 직렬화 및 파일 입출력
□ 주요 연습 내용 : Doc/View Architecture, Menu, Toolbar, Serialize
□ 준비자료 : SimpleShapeDrawing.zip
(SimpleMouseDrawing-GUI, SimplePointSerialize, SimpleTextListFile 등을 참고할 것)
1302908164.zip
[연습문제] Ex4 (Due by 11/14 금 24시까지)
-cyber 강의실 (cyber.dku.edu)로 source code, executable file, solution/project VC++ 2005 file, 보고서를 학번_이름_Ex4.zip으로 묶어서 낼 것. 보고서 (30%)
0. 생성한 프로그램의 메인 프레임의 Title을 “HCI2_Ex4_이름_학번”으로 바꾼다. (힌트: Resource View에서 String Table의 IDR_MAINFRAME에 Caption을 “HCI2_Ex4_<이름>_<학번>”으로 하면 됨)
1. 직렬화가 가능한 CShapeObject 클래스와 CShapeObject 클래스를 상속한 CLineObject, CRectangleObject, CEllipseObject 클래스를 작성한다. (20%)
CShapeObject : public CObject
-멤버 변수:
o 도형의 종류 (m_nShapeMode),
o 시작/끝점 (m_ptStart, m_ptEnd),
o 펜색깔 (m_Color),
o 펜두께(m_nThickness)
-멤버 함수:
o Serialize(CArchive& ar) 함수 안에 CArchive를 이용하여 Loading/Storing할 때 멤버 변수 값을 입출력하게 해주는 루틴을 추가한다.
DECLARE_SERIAL(CShapeObject)/ IMPLEMENT_SERIAL(CShapeObject, CObject, 1) 사용함
CLineObject/CRectangleObject/CEllipseObject : public CShapeObject
-멤버 함수:
o Serialize(CArchive& ar) 함수를 추가한다.
o Draw(CDC* pDC) 함수는 도형의 시작/끝점과 펜색깔과 두께 정보를 가지고
실제도형(선/사각형/타원)을 그려주는 출력 루틴을 추가한다.
DECLARE_SERIAL(CLineObject)/ IMPLEMENT_SERIAL(CLineObject, CShapeObject, 1)
DECLARE_SERIAL(CRectangleObject)/ IMPLEMENT_SERIAL(CRectangleObject, CShapeObject, 1)
DECLARE_SERIAL(CEllipseObject)/ IMPLEMENT_SERIAL(CEllipseObject, CShapeObject, 1) 사용함
2. CSimpleShapeDrawingDoc 클래스에 새로운 도큐먼트 생성, 저장, 읽어 들이기 기능과 도형 리스트의 관리 기능을 추가한다. (10%)
CSimpleShapeDrawingDoc
-멤버 변수:
o 현재 도형의 종류 (m_nShapeMode),
o 펜색깔 (m_Color),
o 펜두께(m_nThickness),
o 도형 리스트 (CTypedPtrList<CObList, CShapeObject*> m_ShapeObjectList)
-멤버 함수:
o 소멸자 함수에서는 모든 도형의 리스트 원소들을 모두 지운다.
o File->New를 위한 DeleteContents() 함수를 추가한다. 이 함수는
OnNewDocument()함수에서 내부적으로 불리는 것으로, 이 함수에 도형의 리스트
원소들을 모두 지운다.
o File->Open/Save/SaveAs를 위한 Serialize(CArchive& ar) 함수를 추가한다.
이 함수 안에 CArchive를 이용하여 Loading/Storing할 때 도형의 리스트를
입출력해준다.
o 도형을 리스트에 추가/제거하는 등의 함수를 추가한다.
void AddShapeObject(CShapeObject* pObj);
void DeleteShapeObject(CShapeObject* pObj); unsigned int GetShapeObjectType();
COLORREF GetShapeObjectColor();
int GetShapeObjectThickness();
POSITION GetListHeadPosition(); // Return list head POSITION value
CShapeObject* GetNext(POSITION& aPos); // Return current object pointer
3. CSimpleShapeDrawingView 클래스의 OnMouseMove 함수 안에서 도형의 속성에 따른 선/사각형/타원 도형을 생성하고 그려주는 루틴을 추가한다. (10%)
4. 도형(선, 사각형, 타원형), 펜의 두께(1,2,3,4,5), 색깔(Red, Green, Blue, Black)을 바꿀 수 있는 메뉴 아이템을 메뉴바에 추가한다. 그리고, 도형과 색깔을 바꿀 수 있는 툴바를 추가한다. (리소스 편집기에서 메뉴와 툴바의 IDR_MAINFRAME을 편집한다) (20%)
ON_COMMAND(ID_SHAPE_LINE, &CSimpleShapeDrawingDoc::OnShapeLine)
ON_COMMAND(ID_SHAPE_RECTANGLE, &CSimpleShapeDrawingDoc::OnShapeRectangle)
ON_COMMAND(ID_SHAPE_ELLIPSE, &CSimpleShapeDrawingDoc::OnShapeEllipse)
ON_COMMAND(ID_COLOR_RED, &CSimpleShapeDrawingDoc::OnColorRed)
ON_COMMAND(ID_COLOR_BLUE, &CSimpleShapeDrawingDoc::OnColorBlue)
ON_COMMAND(ID_COLOR_GREEN, &CSimpleShapeDrawingDoc::OnColorGreen)
ON_COMMAND(ID_COLOR_BLACK, &CSimpleShapeDrawingDoc::OnColorBlack)
ON_COMMAND(ID_THICKNESS_1, &CSimpleShapeDrawingDoc::OnThickness1)
ON_COMMAND(ID_THICKNESS_2, &CSimpleShapeDrawingDoc::OnThickness2)
ON_COMMAND(ID_THICKNESS_3, &CSimpleShapeDrawingDoc::OnThickness3)
ON_COMMAND(ID_THICKNESS_4, &CSimpleShapeDrawingDoc::OnThickness4)
ON_COMMAND(ID_THICKNESS_5, &CSimpleShapeDrawingDoc::OnThickness5)
5. 직접 본인이 원하는 열 개 이상의 도형을 그려보고, 저장과 읽어들이기, 새로운 도큐먼트 생성하기를 수행해보고, 그 결과를 모두 출력해서 넣는다. (10%)
MFC Doc/View Application Program
.NET2005
- 메뉴에서 File->New->Project->Visual C++ 템플릿->MFC->MFC Application를 선택한 후 “프로젝트 이름(예를 들어, SimpleTextFile)”을 적고 확인버튼을 누른다.
- SDI, Use MFC in a Shared DLL, Doc/View Architecture Support, 한국어 선택하고 Next 버튼을 누른다.
- 데이터베이스는 None으로 선택하고 Next버튼을 누른다.
- 사용자인터페이스 확인하고 Next버튼을 누른다.
- Advanced Features에서 ActiveX를 선택해제한다.
- 그리고, Generated Classes를 확인하고 Finish버튼을 누른다.
- CSimpleTextFileView::OnDraw에 출력함수(예: “dc.TextOut(100, 100, CString(“안녕하세요”))을 추가한다.