728x90
300x250

[MFC] 윈도우 프로그래밍 기초 - 파일 대화 상자(CFileDialog)

 

파일 대화 상자는 두 크게 두 가지 유형으로 볼 수 있습니다.

 

 

책들 여러 종류 찾아보니깐 초반부터 함수 원형 넣어놓고 해놨습니다.

초보자를 위해 설명을 드리자면, 결론은 같은 Dialog 창에서 단지 이름만 바껴있지 대화상자는 대화상자라는 것을 말하고 싶습니다.

 

 

이러한 개념을 바탕으로 파일 대화상자의 생성자를 살펴보겠습니다.

 


1. 너는 누구냐? CFlieDialog 생성자

 

CFileDialog (BOOL bOpenFileDialog, // TRUE for FileOpen, FALSE for FileSaveAs
  LPCTSTR lpszDefExt = NULL,
  LPCTSTR lpszFileName = NULL,
  DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
  LPCTSTR lpszFilter = NULL,
  CWnd* pParentWnd = NULL,
  DWORD dwSize = 0,
  BOOL bVistaStyle = TRUE);

 

하나씩 살펴보면,

 

 Parameter

 설명 

 BOOL bOpenFileDialog  

 쉽게 말하면,

 TRUE = "열기 대화상자"

 FALSE = "저장 대화상자"

 LPCTSTR lpszDefExt

 기본으로 사용할 파일 확장자를 입력하기 위한 파라미터

 LPCTSTR lpszFileName

 파일 대화상자가 나타날 때 초기화할 파일 이름을 입력하기 위한

 파라미터

 

* Parameter : DWORD dwFlags

파일 대화상자의 여러 가지 옵션들을 설정하기 위한 Flags

 

Flags 

내용 

OFN_ALLOWMULTISELECT

한 번에 두 개 이상의 파일을 선택할 수 있도록 한다. 

OFN_CREATEPROMPT 

존재하지 않는 파일명을 입력했을 경우 사용자에게 파일 생성을 할 것인지 물어봄. 

OFN_FILEMUSTEXIST 

파일 대화상자의 크기 조절이 가능하도록 한다. 

OFN_FORCESHOWHIDDEN 

시스템 파일과 숨겨진 파일을 보여줌. 

OFN_NOCHANGEDIR 

현재 디렉토리를 변경할 수 없도록 한다. 

OFN_NOVALIDATE 

파일명으로 사용할 수 없는 특수 문자들을 검사하지 않도록 한다. 

OFN_OVERWRITEPROMPT 

저장하기 대화상자에서 선택한 파일이 이미 있을 경우 파일을 덮여쓸 것인지 물어본다. 

OFN_PATHMUSTEXIST

존재하는 경로와 파일만 입력할 수 있도록 한다.

존재하지 않는 파일을 입력하면 경고창을 출력함.

 

 

* Parameter : LPCTSTR lpszFilter

확장자 필터

 

{필터파일형식1|*.확장자|필터파일형식2|*.확장자|............|필터파일형식n|*.확장자n}

 

예제

_T("A파일|*.a|B파일|*.b|C파일|*.c);

 

* Parameter: pWnd : pParentWnd

파일 대화상자의 부모 윈도우를 지정하기 위한 포인터.

 

* Parameter: dwSize

OPENFILENAME 구조체의 크기 지정

 

* Parameter: BOOL bVistaStyle

Vista이상의 대화상자로 출력함.

 


2. CFileDialog 맴버 함수

CFileDialog 클래스는 다양한 맴버 함수를 지원합니다.

프로그래머를 편안하게 해준다는 의미로 해석하시기 바랍니다.

 

혹시 오해하실 수 있는 데 전혀 외울 필요없습니다. 필요하면 보고 하셔도 됩니다.

 

함수

내용

GetFileExt

선택된 파일의 확장자를 Return

GetFileName

선택된 파일의 파일 이름을 Return

GetFileTitle

선택된 파일의 타이틀을 Return

GetFolderPath

선택된 파일의 폴더 경로를 Return

GetPathName

선택된 파일의 전체 경로를 Return

GetReadOnlyPref

선택된 파일의 읽기전용 상태를 Return

GetNextPathName

다음 파일의 전체 경로를 Return

 

 

다음 편에서 실습을 통해 파일 대화 상자를 사용하는 방법을 소개하겠습니다.

반응형
728x90
300x250
[MFC] 윈도우 프로그래밍 기초 - 색상 대화상자 - 실습 2

이번 강의는 창 배경 색깔을 조작하는 법에 대해서 실습하겠습니다.

 

이해가 안되시는 분들은 이전 글 http://yyman.tistory.com/513 ([MFC] 윈도우 프로그래밍 기초 - 색상 대화상자 - 실습 1)을 학습하고 오신 후에 오셨으면 좋겠습니다.

 

Invalidate( ); 라는 명령어에 대해 소개하면, 화면을 갱신하는 데 사용하는 함수라고 보시면 되겠습니다.

 


1. 결과물

 

 

 

 

 

 

 

 


2. 실습 - 레이아웃 구성

 

 


3. 구현

 

(사용자 프로젝트명)Dlg.h 코드 추가

 

 // 구현입니다.
protected:
         HICON m_hIcon;
       COLORREF m_color;

         // 중략

 

(사용자 프로젝트 명)Dlg.cpp 코드 수정 - OnPaint() 함수

 

}
{
       CPaintDC dc(this); // 그리기를 위한 디바이스 컨텍스트입니다.
       CRect rect;
       GetClientRect(&rect);
 
       dc.FillSolidRect(rect, m_color);

 

(사용자 프로젝트 명)Dlg.cpp 코드 수정 - OnBnClickedButton1() 함수

 


void CColorDlgExDlg::OnBnClickedButton1()
{
         CColorDialog colorDlg;

         if (colorDlg.DoModal() == IDOK)
         {
                 m_color = colorDlg.GetColor(); 
                 Invalidate();

         }

}

 

코드는 백문이 불여일타 입니다.

-> 무조건 직접 쳐봐야 합니다.

반응형
728x90
300x250

[MFC] 윈도우 프로그래밍 기초 - 색상 대화상자 - 실습 1

 

 

 

앞서 소개한 색상 대화상자를 우리가 직접 호출해보겠습니다.

 

먼저 클래스 생성자에 대해 소개하겠습니다.

 

1. CColorDialog 생성자

 

 CColorDialog ( COLORREF clrInit = 0, DWORD dwFlags = 0, CWnd* pParentWnd = NULL ) 

 

생성자에는 3개의 Parameter를 사용할 수 있습니다.

Default Value가 이미 존재하므로 특별히 따로 지정하지 않아도 사용할 수는 있습니다.

 

CColorDialog는 아래와 같이 4가지 유형으로 사용할 수 있습니다.

 

 CColorDialog dlg;

 CColorDialog dlg(RGB(255, 0, 0));

 CColorDialog dlg(RGB(255, 0, 0), CC_FULLOPEN);

 CColorDialog dlg(RGB(255, 0, 0), CC_FULLOPEN, this);

 

첫 번째, COLORREF clrInit는 기본 색상을 지정하기 위해 사용됩니다.

 

RGB형을 사용하면 됩니다.

COLORREF는 참고로 별도로 지정하지 않으면, RGB(0, 0, 0)을 기본으로 지정합니다.

 

두 번째, DWORD dwFlags입니다.

5가지 유형으로 사용할 수 있습니다.

 

 

 사용 유형

 설명 또는 동작

 CC_ANYCOLOR

 

 

 CC_FULLOPEN

 

 

 CC_PREVENTFULL

 

 

사용자 지정 색 만들기가 비활성화 됩니다.

 

 CC_RGBINIT

 clrInit으로 지정한 색상을 기본으로 선택하기 위한 플래그

 CC_SOLIDCOLOR

 기본 색상 대화상자를 선택하기 위한 플래그

 

2. 대화상자를 화면에 출력하기

 

 CColorDialog dlg(RGB(0, 0, 0) );

 dlg.DoMoal( ) ;  

 

 

 

3. 선택된 색상 - 반환

 

GetColor( ) 맴버 함수

-> CColorDialog 클래스는 GetColor ( ) 맴버함수를 포함하고 있음

 

원형 구조

 

 COLOREF GetColor( ) const; 

 

우리가 만들 프로그램은 아주 기본적인 프로그램입니다.

 

 

 1. 색상 대화상자 객체 생성

 2. 생성된 색상 대화상자 출력 (DoModal)

 3. 선택된 COLORREF 값 획득

 4. 획득된 COLORREF 값을 사용하여 처리

 

결과

 

 

 

이벤트 처리기랑 이런 부분은 생략하겠습니다.

다 이해하셨다는 전제 하에 진행하겠습니다.

 

이해 안되셨으면 다시 돌아가서 이전 글을 확인하시고 오세요.

 

void CColorDlgExDlg::OnBnClickedButton1()
{
       CColorDialog colorDlg;

       if (colorDlg.DoModal() == IDOK)
       {
           COLORREF color = colorDlg.GetColor();
  
           CString strTmp;

           strTmp.Format(_T("RGB 출력: (%u, %u, %u) "), GetRValue(color), GetGValue(color), GetBValue(color));


           AfxMessageBox(strTmp);

       }

}

 

 

반응형
728x90
300x250

[MFC] 윈도우 프로그래밍 기초 - 공통 대화 상자란?

 

대화상자는 일상 속에서 흔하게 사용하는 부분입니다.

흔히 사용하는 일상 속의 대화상자를 하나씩 살펴보겠습니다.

 

 

 

 

 Tistory의 파일 첨부 - 대화상자

 메모장 - 파일 열기 (대화상자)

 

 

 

 

그림판의 색상 - 대화상자

 메모장 - 글꼴 대화상자

 

이렇게 일상 속에서 쓰는 대화상자는 정말 많습니다.?ㅋㅋ

 

이러한 대화상자들의 재미있는 사실은 MFC에서 제공하는 Common Dialog Classes의 하나의 유형입니다.

교재들을 찾아보면 장엄하게 설명이 많이 나와있는데 큰 의미가 없습니다.

왜냐하면, 공통 대화상자는 임의로 만들 수 있는 것도 아니고 Microsoft에서 MFC를 통해 제공하는 하나의 라이브러리이기 때문입니다.

 

이 정도만 기억하시기 바랍니다.

 

자세한 사항은 전문 서적을 찾아보시거나, 구글링 또는 Microsoft MFC에 대해 찾아보시기 바랍니다.

반응형

+ Recent posts