5. 텍스트 출력 CClientDC dc(this)

Download Report

Transcript 5. 텍스트 출력 CClientDC dc(this)

4-6장 대화상자와 마우스
4. 대화 상자
4.1 대화 상자 아이콘 변경
상단 타이틀 바의 아이콘을 사용자가 변경할 수 있다.
타이틀 바
새로 변경한 아이콘
4. 대화 상자

실습 17
1.
새로 MFC 응용프로그램 프로젝트를 생성한다. (이름 : Icon)
2.
응용프로그램 종류를 [대화 상자 기반]으로,
[유니코드 라이브러리 사용]을 체크 해제한다.
3.
화면에 있는 컨트롤들을 삭제하여 깨끗하게 한다.
4. 대화 상자
4. 리소스 뷰의 Icon을 우측 클릭하고 리소스 추가에서 Icon –
가져오기를 클릭한다.
4. 대화 상자
5. 표시할 아이콘 파일을 선택한다.
열기를 하면 리소스뷰
Icon 항목에 추가된다.
4. 대화 상자
5. IconDlg.cpp 파일에서 IDR_MAINFRAME 을 IDI_ICON1 으로
코드를 변경한다.
CIconDlg::CIconDlg(CWnd* pParent /*=NULL*/)
: CDialogEx(CIconDlg::IDD, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDI_ICON1);
}
오류표시 무시할 것
4. 대화 상자
6. 실행해 보고 아이콘이 변경되었는 지 확인 한다.
5. 텍스트 출력
5.1 대화 상자에 텍스트 출력
스태틱 상자를 사용하지 않고도 대화상자에 텍스트를 출력할
수 있다.
5. 텍스트 출력

실습 20
1.
새로 MFC 응용프로그램 프로젝트를 생성한다. (이름 : Text)
2.
응용프로그램 종류를 [대화 상자 기반]으로,
[유니코드 라이브러리 사용]을 체크 해제한다.
3.
화면에 있는 컨트롤들을 삭제하여 깨끗하게 한다.
5. 텍스트 출력
4. 아래와 같이 출력 버튼과 종료 버튼을 만든다.
5. 텍스트 출력
5. 출력 버튼을 더블 클릭하고 아래 코드를 입력한다.
void CTextDlg::OnBnClickedButton1()
{
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
CClientDC
CString
dc(this);
str1 = "안녕하세요? 여러분!!!";
dc.TextOut(60, 40, str1);
}
변수 str1 의 내용을 (60, 40) 위치에
표시한다.
5. 텍스트 출력
참고 : CClinetDC 와 dc

화면에 텍스트나 그림을 출력하기 위해 우선 가상의 화면에 출력
해야 되는데 CClinetDC는 이 가상화면 클래스를 의미함.

이 클래스를 이용해 dc (디바이스 컨텍스트)를 생성한 후 텍스트
나 도형을 출력
•
디바이스 컨텍스트(DC : Device Context) :
그래픽과 관련한 정보를 모아 놓은 구조체
(0, 0)
x
(x1, y1)
CClientDC dc(this);
dc.TextOut( x1, y1, “출력할 텍스트” );
y
화면 특정위치에 텍스트 출력
5. 텍스트 출력
6.
종료 버튼을 더블 클릭하고 아래 코드를 추가한다.
void CComboDlg::OnClickedButton2()
{
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
OnOK();
다이얼로그 상자 종료
}
7.
실행 후 결과를 확인해 본다.
5. 텍스트 출력
5.2 텍스트 색 변경하기
텍스트 색상 및 배경색을 변경할 수 있다.
5. 텍스트 출력
* 실습 20 에 다음과 같이 코드를 추가하고 실행해 본다.
void CTextDlg::OnBnClickedButton1()
{
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
CClientDC
CString
dc(this);
str1 = "안녕하세요? 여러분!!!";
dc.SetTextColor(RGB(250, 0, 0));
dc.SetBkColor(RGB(250, 250, 0));
dc.TextOut(60, 40, str1);
}
글자색 변경 (적색)
바탕색 변경 (황색)
5. 텍스트 출력
5.3 텍스트 크기 변경하기
텍스트 크기도 변경할 수 있다.
5. 텍스트 출력
* 실습 20 에 다음과 같이 코드를 추가하고 실행해 본다.
void CTextDlg::OnBnClickedButton1()
{
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
CClientDC
dc(this);
글자 크기 (32pt)
새로 글꼴 생성
Italic : 1
Underline : 1
CFont my_font;
my_font.CreateFontA(32, 0, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, "궁서체");
dc.SelectObject(my_font);
}
CString str1 = "안녕하세요? 여러분!!!";
dc.SetTextColor(RGB(250, 0, 0));
dc.SetBkColor(RGB(250, 250, 0));
dc.TextOut(60, 40, str1);
Bold : 800
5. 텍스트 출력
도형도 출력할 수 있다.

(X1, Y1)
CClientDC dc(this);
dc.Rectangle( x1, y1, x2, y2 );
사각형 출력
dc.Ellipse( x1, y1, x2, y2 );
원 출력
dc.MoveTo(200, 10);
특정위치로 이동
dc.LineTo(300, 200);
선을 그린다.
(0, 0)
y
x
(200, 10)
(300, 200)
(X2, Y2)
(X1, Y1)
(X2, Y2)
참고 : 도형 출력
* 실습 20 에 다음과 같이 코드를 추가하고 실행해 본다.
void CTextDlg::OnBnClickedButton1()
{
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
CClientDC
dc(this);
(중간 생략)
dc.SetBkColor(RGB(250, 250, 0));
dc.TextOut(60, 40, str1);
dc.Rectangle(30,30,50,70);
dc.Ellipse(50,50, 100, 100);
dc.MoveTo(200, 10);
dc.LineTo(300, 200);
}
화면 특정위치에 사각형을 출력
화면 특정위치에 원을 출력
화면 특정위치로 이동
화면 특정위치까지 선을 그린다.
참고 : 도형 출력
6. 마우스
6.1 마우스의 이벤트 메시지 처리
마우스의 클릭, 움직임등 각종 이벤트 메시지를 활용할 수 있다.
6. 마우스

실습 21
1.
새로 MFC 응용프로그램 프로젝트를 생성한다. (이름 : Mouse)
2.
응용프로그램 종류를 [대화 상자 기반]으로,
[유니코드 라이브러리 사용]을 체크 해제한다.
3.
화면에 있는 컨트롤들을 삭제하여 깨끗하게 한다.
6. 마우스
4. 에디터 상자 1개와 버튼 1개를 이용해 아래와 같이 만든다.
IDC_EDIT1
IDC_BUTTON1
6. 마우스
5. 클래스 마법사를 실행하고 IDC_EDIT1에 대해 멤버 변수 m_Edit
를 만들고 확인을 누른다.
m_Edit
6. 마우스
6. 메시지 항목에서 WM_LBUTTONDOWN 을 클릭하고 처리기
추가 를 한 후 코드 편집 을 누른다.
6. 마우스
7. 아래와 같이 코드를 추가한다.
void CMouseDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다.
m_Edit = "마우스 왼쪽 버튼을 클릭했습니다.";
UpdateData(FALSE);
}
CDialogEx::OnLButtonDown(nFlags, point);
UpdateData(TRUE)는 생략해도 됨
6. 마우스
8. 마찬가지로 메시지 의 WM_MOUSEMOVE , WM_MOUSEWHEEL
을 클릭하고 처리기 추가 를 한 후 코드 편집 을 누른다.
6. 마우스
9. 아래와 같이 코드를 추가한다.
void CMouseDlg::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다.
m_Edit = "마우스를 움직였습니다.";
UpdateData(FALSE);
}
CDialogEx::OnMouseMove(nFlags, point);
BOOL CMouseDlg::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt)
{
// TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다.
m_Edit = "마우스 휠을 움직였습니다.";
UpdateData(FALSE);
}
return CDialogEx::OnMouseWheel(nFlags, zDelta, pt);
6. 마우스
10. 종료 버튼을 더블 클릭하고 아래 코드를 추가한다.
void CComboDlg::OnClickedButton1()
{
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
OnOK();
다이얼로그 상자 종료
}
11. 실행 후 결과를 확인해 본다.
추가 실습
마우스를 움직일 때 x, y 좌표값이 에디터 상자에 표시되도록 한다.
마우스 움직임에 대한 위치 정보를 받는다.
void CPointDlg::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다.
char str1[100];
m_Edit = "마우스를 움직였습니다."; 대신에 입력
sprintf(str1, "x: %d y: %d", point.x, point.y);
m_Edit = str1;
UpdateData(FALSE);
}
CDialogEx::OnMouseMove(nFlags, point);
변수 str1에 좌표값 입력