12. 공통 대화상자

Download Report

Transcript 12. 공통 대화상자

12장. 공통 대화상자
12. 공통 대화상자
12.1 폰트선택 공통 대화상자
윈도우에서 기본으로 제공하는 공통 대화상자를 이용하여 글꼴
종류, 크기, 색상 등을 변경해 본다.
클릭
12. 공통 대화상자

실습 26
1.
새로 MFC 응용프로그램 프로젝트를 생성한다. (이름 : Fdlg)
2.
응용프로그램 종류를 [대화 상자 기반]으로,
[유니코드 라이브러리 사용]을 체크 해제한다.
3.
화면에 있는 컨트롤들을 삭제하여 깨끗하게 한다.
12. 공통 대화상자
4. 버튼 2개를 이용해 아래와 같이 만든다.
IDC_BUTTON1
IDC_BUTTON2
12. 공통 대화상자
5. 클래스 마법사를 실행하고 메시지 항목의 WM_PAINT에 대해
코드 편집을 누른다.
12. 공통 대화상자
6. 아래와 같이 코드를 추가한다.
위치 주의!
LOGFONT IFn;
CHOOSEFONT cFt;
COLORREF fColor;
글꼴 정보 (크기, 스타일, 효과) 구조체
글꼴 대화상자(선택창) 구조체
글꼴 색상지정 데이터형
void CFdlgDlg::OnPaint()
{
(중간 생략)
}
CDialogEx::OnPaint();
CClientDC dc(this);
HFONT hFont;
CString str1 = "폰트 선택 공통 대화상자";
hFont = CreateFontIndirect(&IFn);
dc.SelectObject(hFont);
dc.SetTextColor(fColor);
dc.TextOutA(10, 50, str1);
}
LOGFONT 구조체를 사용하여
글꼴을 정의하고 새 글꼴을 만든다.
선택한 새 글꼴 호출 및 적용
글꼴 색상 적용
텍스트 표시
12. 공통 대화상자
7. 글꼴선택을 더블 클릭하고 아래의 코드를 입력한다.
void CFdlgDlg::OnBnClickedButton1()
{
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
글꼴 선택창을 연다.
cFt.lStructSize = sizeof(CHOOSEFONT);
cFt.lpLogFont = &IFn;
글꼴 선택창에 글꼴효과 모두 표시
cFt.Flags = CF_EFFECTS;
if(ChooseFont(&cFt))
{
fColor = cFt.rgbColors;
Invalidate(TRUE);
}
}
새로 글꼴을 선택했다면
선택한 글꼴 색상 적용
화면 갱신
12. 공통 대화상자
8. 종료 버튼을 더블 클릭하고 아래 코드를 추가한다.
void CComboDlg::OnClickedButton2()
{
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
OnOK();
다이얼로그 상자 종료
}
9. 실행 후 결과를 확인해 본다.
12. 공통 대화상자
12.2 파일선택 공통 대화상자
윈도우에서 기본으로 제공하는 파일 열기 대화상자를 이용해
본다.
12. 공통 대화상자
4. 아래와 같이 버튼 2개를 만든다.
IDC_BUTTON1
IDC_BUTTON2
12. 공통 대화상자
5. 파일열기를 더블 클릭하고 아래 코드를 입력한다.
void COdlgDlg::OnBnClickedButton1()
{
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
OPENFILENAME oFn;
char Filename[100], lpstrFile[100] = "";
memset(&oFn, 0, sizeof(OPENFILENAME));
oFn.lStructSize = sizeof(OPENFILENAME);
파일 열기 구조체
파일명, 경로 변수 지정
메모리초기화
파일선택 대
화상자 표시
oFn.lpstrFilter = "모든파일(*.*) \0*.*\0Text File\0*.txt\0";
oFn.lpstrFile = lpstrFile;
oFn.nMaxFile = 100;
파일경로
(계속)
콤보상자에
표시할
파일형식
12. 공통 대화상자
if (GetOpenFileName(&oFn) == 0)
{
else
}
열기 취소한 경우
MessageBox("파일 열기 취소", "알림", NULL);
{
sprintf(Filename, "%s 파일을 선택", oFn.lpstrFile);
MessageBox(Filename, "알림", NULL);
}
}
메시지 상자에 선택한 경로 + 파일명 표시
12. 공통 대화상자
6. 종료 버튼을 더블 클릭하고 아래 코드를 추가한다.
void CComboDlg::OnClickedButton2()
{
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
OnOK();
다이얼로그 상자 종료
}
7. 실행 후 결과를 확인해 본다.
추가실습 1
* 아래와 같이 파일을 열면 실제 파일 내용이 출력되도록 해 본다.
추가실습 1
새로 입력
DWORD dwRead;
char buf[10000] = "";
HANDLE hInputFile;
if (GetOpenFileName(&oFn) == 0)
{
}
else
변수지정
// 열기할 파일이름을 획득
MessageBox("파일 열기 취소", "알림", NULL);
추가실습 1
else
{
hInputFile = CreateFile(oFn.lpstrFile, GENERIC_READ,
FILE_SHARE_READ, NULL, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, NULL);
if (hInputFile != INVALID_HANDLE_VALUE)
{
ReadFile(hInputFile, buf, 10000, &dwRead, NULL);
CloseHandle(hInputFile);
}
MessageBox(buf, oFn.lpstrFile, MB_OK);
교체
}
}
buf 의 내용을 메시지
박스에 표시한다.
제목은 파일경로(oFn.lpstrFile)
로 한다.
파일 내용을 읽어서(10000자)
변수 buf에 넣는다.
12. 공통 대화상자
12.3 색상선택 공통 대화상자 사용하기
윈도우에서 기본 제공하는 색상 선택 공통 대화상자를 사용해
본다.
12. 공통 대화상자

실습 28
1.
새로 MFC 응용프로그램 프로젝트를 생성한다. (이름 : Cdlg)
2.
응용프로그램 종류를 [대화 상자 기반]으로,
[유니코드 라이브러리 사용]을 체크 해제한다.
3.
화면에 있는 컨트롤들을 삭제하여 깨끗하게 한다.
12. 공통 대화상자
4. 아래와 같이 버튼 2개를 만든다.
IDC_BUTTON1
IDC_BUTTON2
12. 공통 대화상자
5. 소스 코드에서 OnPaint() 위쪽에 다음의 코드를 입력한다.
// 대화 상자에 최소화 단추를 추가할 경우 아이콘을 그리려면
// 아래 코드가 필요합니다. 문서/뷰 모델을 사용하는 MFC 응용 프로그램의 경우에는
// 프레임워크에서 이 작업을 자동으로 수행합니다.
COLORREF Color=RGB(255,0,0);
void CCdlgDlg::OnPaint()
{
if (IsIconic())
처음 사각형색은 적색으로
12. 공통 대화상자
6. 소스 코드에서 OnPaint() 아래쪽에 다음의 코드를 입력한다.
void CColorDlgDlg::OnPaint()
{
(중간 생략)
{
}
}
CDialog::OnPaint();
HBRUSH hBrush;
CClientDC dc(this);
면을 채색하기 위해
브러쉬 사용
hBrush = CreateSolidBrush(Color);
(HBRUSH)dc.SelectObject(hBrush);
dc.Rectangle(35, 35, 490, 190);
DeleteObject(hBrush);
브러시 생성
색 적용
사각형을 그린다.
12. 공통 대화상자
7. 색상 변경 버튼을 더블 클릭하고 다음의 코드를 입력한다.
void CCdlgDlg::OnBnClickedButton1()
{
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
CHOOSECOLOR col;
COLORREF tmp[16];
선택한 색 적용
}
메모리 초기화
memset(&col, 0, sizeof(CHOOSECOLOR));
col.lStructSize = sizeof(CHOOSECOLOR);
색 선택창 표시
col.lpCustColors = tmp;
새로운 색을 선택했다면
if (ChooseColor(&col) != 0)
{
새로 선택한 색을 변수
Color = col.rgbResult;
Color에 적용
Invalidate(TRUE);
}
12. 공통 대화상자
8. 종료 버튼을 더블 클릭하고 아래 코드를 추가한다.
void CComboDlg::OnClickedButton2()
{
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
OnOK();
다이얼로그 상자 종료
}
9. 실행 후 결과를 확인해 본다.
추가실습 2
* 아래와 같이 격자 무늬로 색을 칠해 본다.
hBrush = CreateSolidBrush(Color);
를
hBrush = CreateHatchBrush(HS_CROSS, Color);
로 바꾼다.
추가실습 3
* 실제 사용할 수 있는 메모장을 프로젝트 마법사를 이용해 간
단하게 만들어 본다.
추가실습 3
1.
새로 MFC 응용프로그램 프로젝트를 생성한다. (이름 : Memo)
2.
응용프로그램 종류를 [단일 문서]으로,
[유니코드 라이브러리 사용]을 체크 해제한다.
대화상자 아님!!
연습문제 3
3.
[다음]을 계속 누르다가 아래 화면이 나오면 [탐색기 도킹 창],
[출력 도킹 창], [속성 도킹 창]을 체크 해제한다.
연습문제 3
4.
[다음]을 계속 누르고 아래 화면이 나오면 기본 클래스를
CEditView 로 바꾼다.
중요!!
연습문제 3
5.
프로젝트가 생성되면 실행해 메모장의 기능을 확인한다.
연습문제 3
6.
프로젝트 생성시 기본 클래스를 CHtmlEditView 로 하면 텍스
트뿐 아니라 그림파일이나 HTML파일도 표시한다.