336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

CFileDialog::CFileDialog

CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, LPCTSTR lpszFilter = NULL, CWnd* pParentWnd = NULL );


Parameters

bOpenFileDialog : 파일 열기 대화상자를 생성하려면 TRUE로, 파일 저장하기 대화상자를 생성하려면 FALSE로 설정한다.

lpszDefExt : 디폴트 파일 확장자. 사용자가 파일명 에디트 박스에서 확장자를 포함하지 않으면, lpszDefExt에 설정된 확장자가 자동적으로 파일명에 붙는다. 인자가 NULL이면, 확장자가 붙지 않는다.

lpszFileName : 파일명 에디트 박스에 나타나는 초기 파일명. NULL이면, 초기에 파일명이 나타나지 않는다.

dwFlags : 사용자가 대화상자를 사용자 정의로 지정하도록 하는 하나 또는 그 이상의 플래그의 조합.

lpszFilter : 사용자가 파일에 적용할 수 있는 필터를 지정하는 문자열

pParentWnd : 파일 대화상자 객체의 부모 윈도우 또는 오우너 윈도우에 대한 포인터


Remarks

표준 윈도우 파일 대화상자 객체를 생성하기 위해서 이 함수를 호출한다. bOpenFileDialog의 값에 따라서 파일 열기 대화상자 또는 파일 저장하기 대화상자가 생성된다.

사용자가 다중 파일 선택을 가능하도록 하려면, DoMoal을 호출하기 전에 OFN_ALLOWMULTISELECT 플래그를 설정한다. 다중 파일명의 반환된 리스트를 처리하기 위해서 파일명 버퍼를 마련해야 한다. 이것은 m_ofn.lpstrFile을 할당한 버퍼에 대한 포인터로 대치함으로써 가능하다. CFileDialog를 생성한 수에 그러나 DoModal을 호출하기 전에 해야한다. 게다가, m_ofn.lpstrFile에 의해서 가리켜지는 버퍼에서 문자의 수를 m_ofn.nMaxFile에 설정해야 한다.

lpszFilter 인자가 파일명의 타입을 결정하는데 사용되어진다면 파일은 파일 리스트 박스에 표시되어야 한다. 문자열 쌍에서 첫 번째 문자열은 필터를 나타낸다. 두 번째 문자열은 사용되는 파일 확장자를 나타낸다. 다중 확장자는 구획문자 ‘;’를 사용해서 설정한다. 이 인자를 위해서 CString 객체를 사용할 수 있다. 문자열은 두 개의 ‘|’ 문자로 끝나고, 다음에 NULL이 온다.


CFileDialog::DoModal

virtual int DoModal( );


Return Value

함수가 성공적으로 수행되면, IDOK 또는 IDCANCEL 리턴. 대화상자에서 사용자가 선택한 버튼에 따라 IDOK 또는 IDCANCEL이 리턴된다.

IDCANCEL이 리턴되면, 에러가 발생했는지를 결정하기 위해서 윈도우즈 CommDlgExtendedError 함수를 호출할 수 있다.


Remarks

윈도우즈 공통 대화상자를 표시하고, 사용자가 파일과 디렉토리를 찾고, 파일명을 입력하도록 하기 위해서 이 함수를 호출한다.

m_ofn 구조체의 멤버들을 설정해서 다양한 파일 대화상자 옵션을 초기화하려면, 대화상자 객체가 생성되고, DoModal이 호출되기 전에 해야 한다.

사용자가 대화상자의 OK나 Cancel 버튼을 누르거나, 대화상자의 컨트롤 메뉴에서 Close 옵션을 선택했을 때, 컨트롤이 어플리케이션에 리턴된다. 그때서야 사용자가 대화상자에 입력한 정보나 설정을 알아내기 위해서 다른 멤버 함수들을 호출할 수 있다.

DoModal은 CDialog 클래스에서 오버라이딩된 가상함수이다.


CFileDialog::GetFolderPath

CString GetFolderPath() const;


Return Value

현재 열고있는 폴더나 디렉토리를 CString object에 담고있다

Remarks

이 다이얼로그 박스는 OFN_EXPLORER 스타일을 반드시 생성해야 한다.

CFileDialog::GetNextPathName

CString GetNextPathName (POSITION& pos) const;

Return Value

파일의 총 경로

Parameters
GetNextPathName 또는 GetStartPosition을 호출 되면 POSITION value를 리턴


Remarks

파일이름의 경로는 파일이름에 이렉토리 경로를 포함한다.
예를 들어, GetNextPathName 는 C:\FILES\TEXT.DAT 파일의 반환 값으로  "C:\FILES\TEXT.DAT"를 반환할 것이다. 만약 GetStartPosition을 사용하여 초기 위치를 설정한다면 GetNextPathName을 반복문 전에 사용하여야 한다.


CFileDialog::GetPathName

CString GetPathName( ) const;


Return Value

파일의 전체 경로를 리턴한다.


Remarks

대화상자에 입력된 파일의 전체 경로를 알아내기 위해서 이 함수를 호출한다. 예를 들면, GetPathName은 파일 C:\FILES\TEXT.DAT에 대해서 "C:\FILES\TEXT.DAT"를 리턴 할 것이다.

m_ofn.Flags가 OFN_ALLOWMULTISELECT 플래그 설정을 가지면, 이 문자열은 첫 번째 문자열은 선택된 파일 그룹의 디렉토리 경로이고, 그 다음은 사용자가 선택한 모든 파일명을 가지는 널종료 문자열을 포함한다. 이러한 이유로, 리스트에서 다음 파일명을 얻기 위해서 GetStartPosition과 GetNextPathName 멤버 함수를 사용한다.


CFileDialog::GetFileName

CString GetFileName( ) const;


Return Value

파일명을 리턴한다.


Remarks

대화상자에 입력된 파일명을 알아내기 위해서 이 함수를 호출한다. 물론 확장자도 포함된다. 예를 들면, GetFileName은 C:\FILES\TEXT.DAT에 대해서 "TEXT.DAT"을 리턴한다. 

m_ofn.Flages가 OFN_ALLOWMULTISELECT 플개그 설정을 가지면, 파일 경로명을 알아내기 위해서 GetStartPosition과 GetNextPathName을 호출해야 한다.


CFileDialog::GetOFN
const OPENFILENAME& GetOFN() const;

OPENFILENAME& GetOFN;

Return Value

OPENFILENAME 구조체


Remarks

이 함수는 FileOpen이나 File Save As 다이얼로그 박스를 DoModal 함수를 호출하기 이전에 두번째 버전을 사용하여 초기화한다.

예를 들어 m_ofn의 맴버 lpstrTitle를 이용해 다이얼로그 박스의 캡션을 설정할 수 있다.

CFileDialog::HideControl
void HideControl( int nID);

 

Parameters

nID, 컨트롤의 ID를 숨길 수있습니다


Remarks

다이얼로그 박스는 반드시 OFN_EXPLORER 스타일을 이용하여 생성해야 한다

 

CFileDialog::GetFileExt

CString GetFileExt( ) const;


Return Value

파일의 확장자


Remarks

대화상자에 입력된 파일의 확장자를 알아내기 위해서 이 함수를 호출한다. 예를 들어, 파일명이 DATA.TXT인 파일명이 입력되면, GetFileExt는 "TXT"를 리턴한다.

m_ofn.Flags가 OFN_ALLOWMULTISELECT 플래그 설정을 가지면, 이 문자열은 첫 번째 문자열은 선택된 파일 그룹의 디렉토리 경로이고, 그 다음은 사용자가 선택한 모든 파일명을 가지는 널종료 문자열을 포함한다. 파일 경로명을 얻기 위해서 GetStartPosition과 GetNextPathName 멤버 함수를 사용한다.


CFileDialog::GetFileTitle

CString GetFileTitle( ) const;


Return Value

파일의 타이틀


Remarks

대화상자에 입력된 파일의 이름을 알아내기 위해서 이 함수를 호출한다. 파일의 이름은 확장자나 경로없이 그것의 이름만을 포함한다. 예를 들면, GetFileTitle은 C:\FILES\TEXT.DAT에 대해서 "TEXT"를 리턴한다.

m_ofn.Flags가 OFN_ALLOWMULTISELECT 플래그 설정을 가지면, 이 문자열은 첫 번째 문자열은 선택된 파일 그룹의 디렉토리 경로이고, 그 다음은 사용자가 선택한 모든 파일명을 가지는 널종료 문자열을 포함한다. 이러한 이유로, 리스트에서 다음 파일명을 얻기 위해서 GetStartPosition과 GetNextPathName 멤버 함수를 사용한다.


CFileDialog::GetReadOnlyPref

BOOL GetReadOnlyPref( ) const;


Return Value

대화상자에서 읽기 전용 체크박스가 선택되면, 0이 아닌 값을 그렇지 않으면 0을 리턴.


Remarks

윈도우즈 표준 파일 열기 대화상자에는 읽기 전용 체크 박스가 있다. 이 함수는 읽기 전용체크 박스가 체크되었는지를 결정하기 위해서 이 함수를 호출한다. 읽기 전용 체크 박스는 CFileDialog 생성자에서 OFN_HIDEREADONLY 속성을 설정하면 보이지 않게 할 수 있다.


CFileDialog::GetStartPosition

POSITION GetStartPosition( ) const;


Return Value

순환을 위한 위치값으로 리스트가 비어있으면 NULL을 리턴.


Remarks

m_ofn.Flags가 OFN_ALLOWMULTISELECT 플래그 설정을 가질 경우, 리스트에 있는 첫 번째 파일 경로명의 위치를 알아내기 위해서 이 멤버 함수를 호출한다.


CFileDialog::OnShareViolation

virtual UINT OnShareViolation( LPCTSTR lpszPathName );


Return Value

다음 값들 중 하나를 리턴:

OFN_SHAREFALLTHROUGH : 대화상자로부터 리턴된 파일명

OFN_SHARENOWARN : 처리할 필요가 있는 액션이 더 이상 없음

OFN_SHAREWARN : 에러에 대한 표준 경고 메시지를 검색


Parameters

lpszPahtName : 공유 위반이 발생한 파일의 경로


Remarks

공유 위반의 사용자 정의 처리를 제공하기 위해서 이 함수를 오버라이딩 한다. 보통, 이 함수를 사용할 필요가 없다. 왜냐하면, 프레임워크가 공유 위반의 디폴트 체크를 제공하고, 공유 위반이 발생하면, 메시지 박스를 보여주기 때문이다. 

공유 위반 확인을 불가능하게 하려면, m_ofn.Flags를 가진 플래그 OFN_SHAREAWARE를 조합한 OR 연산자를 사용한다.


CFileDialog::OnFileNameOK

virtual BOOL OnFileNameOK( );


Return Value

파일명이 유효한 이름이 아니면 1을 그렇지 않으면 0을 리턴.


Remarks

공통 파일 대화상자에 입력된 파일명의 사용자 유효성 검사를 제공하기를 원하는 경우만 이 함수를 오버라이딩한다. 이 함수는 어떤 어플리케이션 지정 이유로 파일명을 거절하도록 한다. 보통은, 이 함수를 사용할 필요가 없다. 왜냐하면, 프레임워크는 파일명의 디폴트 유효성 검사를 제공하고, 무효한 파일명이 입력된다면 메시지 박스를 출력하기 때문이다.

1이 리턴되면, 대화상자는 사용자가 다른 파일명을 입력하도록 하기 위해서 표시된 상태로 그대로 있는다. 대화 프로시저는 리턴 값이 0이면 대화상자를 없앤다. 다른 0이 아닌 리턴된 값들은 저장되어지고 사용되지는 않는다.


CFileDialog::OnLBSelChangedNotify

virtual void OnLBSelChangedNotify( UINT nIDBox, UINT iCurSel, UINT nCode);


Parameters

nIDBox : 선택된 리스트 박스나 콤보 박스의 ID

iCurSel : 현재 선택된 인덱스

nCode : 컨트롤 통지 코드. 이 인자는 다음 값들중 하나를 가져야만 한다.

CD_LBSELCHANGE : 단일 선택 리스트 박스에서 선택된 아이템인 iCurSel을 지정한다. 

CD_LBSELSUB : 다중 선택 리스트 박스에서 더 이상 선택된 것이 없다는 iCurSel을 지정한다.

CD_LBSELADD   Specifies that iCurSel is selected in a multiselection list box.

: 다중 선택 리스트 박스에서 선택된 iCurSel을 지정한다.

CD_LBSELNOITEMS   Specifies that no selection exists in a multiselection list box.

: 다중선택 리스트 박스에서 선택된 것이 더 이상 없다는 것을 지정한다.


Remarks

이 함수는 리스트 박스에서 현재 선택된 것이 바뀔려고 할 때마다 호출된다.  리스트 박스에서 선택의 변화를 처리하기 위해서 사용자 정의로 하려면 이 함수를 오버라이딩 한다.


CFileDialog::OnInitDone

virtual void OnInitDone( );


Remarks

WM_NOTIFY CDN_INITDONE 메시지를 처리하기 위해서 이 함수를 오버라이딩 한다. 통지 메시지는 시스템이 차일드 대화상자의 컨드롤들을 위한 공간을 만들기 위해서 열기나 저장하기 대화상자에서 컨트롤들을 배치하는 것을 마쳤을 때 보내진다.

통지는 OFN_EXPLORER 속성을 가지고 생성된 대화화상자에게만 보내진다. OFN_EXPLORER 속성에 대해서 알고싶으면, OPENFILENAME 구조체와 열기와 저장하기 대화상자를 참조하라.


CFileDialog::OnFileNameChange

virtual void OnFileNameChange( );


Remarks

WM_NOTIFY CDN_SELCHANGE 메시지를 처리하기 위해서 이 함수를 오버라이딩 한다.

Notification is sent only if the dialog box was created with the OFN_EXPLORER style. 통지는 OFN_EXPLORER 속성을 가지고 생성된 대화상자에게만 보내진다. 통지에 대해서 더 알고싶으면, CDN_SELCHANGE를 참조하시오. 통지는 OFN_EXPLORER 속성을 가지고 생성된 대화화상자에게만 보내진다. OFN_EXPLORER 속성에 대해서 알고싶으면, OPENFILENAME 구조체와 열기와 저장하기 대화상자를 참조하라.


CFileDialog::OnFolderChange

virtual void OnFolderChange( );


Remarks

WM_NOTIFY CDN_FOLDERCHANGE 메시지를 처리하기 위해서 이 함수를 오버라이딩 한다. 통지 메시지는 새로운 폴더가 열기 또는 저장하기 대화상자에서 열릴 때 보내진다.

통지는 OFN_EXPLORER 속성을 가지고 생성된 대화화상자에게만 보내진다. 통지에 대해서 더 알고싶으면, CDN_FOLDERCHANGE를 참조하시오. OFN_EXPLORER 속성에 대해서 알고싶으면, OPENFILENAME 구조체와 열기와 저장하기 대화상자를 참조하라.


CFileDialog::OnTypeChange

virtual void OnInitDone( );


Remarks

WM_NOTIFY CDN_TYPECHANGE 메시지를 처리하기 위해서 이 함수를 오버라이딩 한다. 통지 메시지는 사용자가 열기 또는 저장하기 대화상자에서 파일 타입의 리스트에서 새로운 파일 타입을 선택할 때 보내진다.

통지 메시지는 OFN_EXPLORER 속성을 가지고 생성된 대화상자에게만 보내진다.  통지 메시지에 대해서 더 알고싶으면, CDN_TYPECHANGE를 참도하시오. OFN_EXPLORER 속성에 대해서 더 알고싶으면, OPENFILENAME 구조체와 열기와 저장하기 대화상자를 참조하시오.

'Programming > Windows programming' 카테고리의 다른 글

OpenCV MFC용 이미지 클래스  (0) 2009.07.16
하나의 에디트박스에 두개의 스핀컨트롤러 사용하기  (0) 2009.06.11
PreTranslateMessage  (0) 2009.05.29
[VC++ 2003] File filter setting  (0) 2009.04.30
XML perser  (0) 2009.03.13

+ Recent posts