컴퓨터 공부/MFC 프로그래밍

[5월 20일 2교시] 공통 다이얼로그 + 프로퍼티 시트 1

려리군 2009. 5. 20. 10:39

공통 다이얼로그

많은 프로그램에서 자주 사용되는 기능들의 인터페이스에 대한 다이얼로그

COMDLG32.DLL 에 포함되어 있다.


CColorDialog : 색깔 다이얼로그

CFileDialog : 파일 다이얼로그

CFindReplaceDialog : 찾기/바꾸기 다이얼로그

CPageSetupDialog : 인쇄하기 전에 쓰이는 페이지 설정 다이얼로그

CFontDialog : 폰트 다이얼로그

CPrintDialog : 프린터 다이얼로그


파일 다이얼로그

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

참고주소 : http://msdn.microsoft.com/en-us/library/wh5hz49d(VS.71).aspx

표준 윈도우 파일 다이얼로그 객체를 생성한다.

bOpenFileDialog : TRUE면 파일열기, FALSE면 파일 저장.

lpszDefExt : 기본 파일 확장자.

lpszFileName : 에디트 박스에 나타나는 초기 파일 이름

dwFlags : 다이얼로그를 사용자에 맞게 만들기 위해 사용하는 플래그의 조합

lpszFilter : 파일에 적용할 수 있는 특별한 필터.

사용예시)  char szFilter[] = "Text File (*.txt) | *.txt | All Files(*.*)|*.*||";

pParentWnd : 다이얼로그 객체의 부모 포인터

dwSize : OPENFILENAME 구조체의 크기


CString CFileDialog::GetPathName( ) const;

참고주소 : http://msdn.microsoft.com/en-us/library/5b9c3c1f(VS.71).aspx

다이얼로그에 입력된 파일의 전체 경로를 얻는다.

리턴 : 파일의 전체 경로


프로퍼티 시트

위저드 모드 / 일반모드

'적용' 버튼이 있다. (dirty 상태일 때 사용)

Property Sheet(프레임) : CWnd상속

Property Sheet(내용) : CDialog상속

OK/CANCEL버튼 필요없다.


생성자

CPropertySheet::CPropertySheet( LPCTSTR pszCaption, CWnd *pParentWnd = NULL, UINT iSelectPage = 0 );

참고주소 : http://msdn.microsoft.com/en-us/library/aa299544(VS.60).aspx

pszCaption : 제목창의 문자열 이름

pParentWnd : 프로퍼티 시트의 부모 윈도우. NULL이면 메인 윈도우와 연결됨

iSelectPage : 초기화될 페이지의 인덱스.


함수

virtual INT_PTR CPropertySheet::DoModal( );

참고주소 : http://msdn.microsoft.com/en-us/library/8xk61eyw(VS.80).aspx

모달 프로퍼티 시트를 연다.

리턴 : 성공시 IDOK 혹은 IDCANCEL . 실패시 0 또는 -1

만약 프로피터 시트가 위저드로서 만들어졌다면 DoModal은 ID_WIZFINISH나 IDCANCEL로 리턴이 된다.


void CPropertySheet::AddPage(CPropertyPage *pPage);

참고주소 : http://msdn.microsoft.com/en-us/library/y2ed8wah(VS.80).aspx

프로퍼티 시트에서 우상단 탭에 페이지를 추가한다.

pPage : NULL이 될 수 없고 프로퍼티 시트에 추가할 페이지.


CPropertyPage* CPropertySheet::GetActivePage() const;

참고주소 : http://msdn.microsoft.com/en-us/library/730397w6(VS.80).aspx

프로퍼티 시트 윈도우의 활성화된 페이지를 얻는다.

리턴 : 활성화 된 페이지의 포인터


BOOL CPropertySheet::SetActivePage(int nPage);

BOOL CPropertySheet::SetActivePage(CPropertyPage* pPage);

활성화 페이지를 바꾼다.
리턴 : 프로퍼티 시트가 성공적으로 활성화 되면 TRUE 아니면 FALSE
nPage : 설정할 페이지의 인덱스 0과 프로퍼티 시트 페이지의 수보다 작아야 한다.
pPage : 프로퍼티 시트에서 설정할 페이지의 포인터

void CPropertySheet::SetWizardMode();

참고주소 : http://msdn.microsoft.com/en-us/library/1sse9730(VS.80).aspx

프로퍼티 페이지를 위저드로 설정한다.


CPropertyPage

프로퍼티 시트의 각 페이지

다이얼로그 리소스로부터 생성되므로 함수들이 비슷함.

다이얼로그 캡션은 프로퍼티시트의 탭의 이름이 된다.

클래스 위저드에서 기본(부모) 클래스를 CPropertyPage를 사용해야 한다. (CDialog아님)