다음을 통해 공유


CDialog 클래스

화면에 대화 상자를 표시하는 데 사용되는 기본 클래스입니다.

구문

class CDialog : public CWnd

멤버

공용 생성자

속성 설명
CDialog::CDialog CDialog 개체를 생성합니다.

공용 메서드

이름 설명
CDialog::Create 초기화는 CDialog 개체입니다. 모덜리스 대화 상자를 만들어 개체에 CDialog 연결합니다.
CDialog::CreateIndirect 메모리의 대화 상자 템플릿에서 모덜리스 대화 상자를 만듭니다(리소스 기반이 아님).
CDialog::DoModal 모달 대화 상자를 호출하고 완료되면 반환합니다.
CDialog::EndDialog 모달 대화 상자를 닫습니다.
CDialog::GetDefID 대화 상자에 대한 기본 푸시버튼 컨트롤의 ID를 가져옵니다.
CDialog::GotoDlgCtrl 대화 상자에서 지정된 대화 상자 컨트롤로 포커스를 이동합니다.
CDialog::InitModalIndirect 메모리의 대화 상자 템플릿에서 모달 대화 상자를 만듭니다(리소스 기반이 아님). 매개 변수는 함수 DoModal 가 호출될 때까지 저장됩니다.
CDialog::MapDialogRect 사각형의 대화 상자 단위를 화면 단위로 변환합니다.
CDialog::NextDlgCtrl 포커스를 대화 상자의 다음 대화 상자 컨트롤로 이동합니다.
CDialog::OnInitDialog 대화 상자 초기화를 보강하려면 재정의합니다.
CDialog::OnSetFont 대화 상자 컨트롤이 텍스트를 그릴 때 사용할 글꼴을 지정하려면 재정의합니다.
CDialog::PrevDlgCtrl 대화 상자에서 포커스를 이전 대화 상자 컨트롤로 이동합니다.
CDialog::SetDefID 대화 상자의 기본 푸시버튼 컨트롤을 지정된 푸시버튼으로 변경합니다.
CDialog::SetHelpID 대화 상자의 상황에 맞는 도움말 ID를 설정합니다.

보호된 메서드

속성 설명
CDialog::OnCancel 취소 단추 또는 ESC 키 작업을 수행하려면 재정의합니다. 기본값은 대화 상자를 닫고 DoModal IDCANCEL을 반환합니다.
CDialog::OnOK 모달 대화 상자에서 확인 단추 작업을 수행하려면 재정의합니다. 기본값은 대화 상자를 닫고 IDOK를 DoModal 반환합니다.

설명

대화 상자는 모달과 모덜리스의 두 가지 유형입니다. 애플리케이션이 계속되기 전에 사용자가 모달 대화 상자를 닫아야 합니다. 모덜리스 대화 상자를 사용하면 대화 상자를 취소하거나 제거하지 않고 대화 상자를 표시하고 다른 작업으로 돌아갈 수 있습니다.

CDialog 개체는 대화 상자 템플릿과 파생 클래스의 CDialog조합입니다. 대화 상자 편집기를 사용하여 대화 상자 템플릿을 만들고 리소스에 저장한 다음 클래스 추가 마법사를 사용하여 파생 클래스를 만듭니다 CDialog.

다른 창과 마찬가지로 대화 상자는 Windows에서 메시지를 받습니다. 대화 상자에서는 사용자가 대화 상자와 상호 작용하는 방식이기 때문에 대화 상자의 컨트롤에서 알림 메시지를 처리하는 데 특히 관심이 있습니다. 클래스 마법사사용하여 처리할 메시지를 선택하면 적절한 메시지 맵 항목 및 메시지 처리기 멤버 함수가 클래스에 추가됩니다. 처리기 멤버 함수에서 애플리케이션별 코드만 작성하면 됩니다.

원하는 경우 항상 메시지 맵 항목 및 멤버 함수를 수동으로 작성할 수 있습니다.

가장 간단한 대화 상자를 제외한 모든 대화 상자에서 파생된 대화 상자 클래스에 멤버 변수를 추가하여 사용자가 대화 상자의 컨트롤에 입력한 데이터를 저장하거나 사용자의 데이터를 표시합니다. 변수 추가 마법사를 사용하여 멤버 변수를 만들고 컨트롤과 연결할 수 있습니다. 동시에 각 변수에 대해 변수 형식 및 허용되는 값 범위를 선택합니다. 코드 마법사는 파생된 대화 상자 클래스에 멤버 변수를 추가합니다.

멤버 변수와 대화 상자 컨트롤 간의 데이터 교환을 자동으로 처리하기 위해 데이터 맵이 생성됩니다. 데이터 맵은 대화 상자의 컨트롤을 적절한 값으로 초기화하고, 데이터를 검색하고, 데이터의 유효성을 검사하는 함수를 제공합니다.

모달 대화 상자를 만들려면 파생된 대화 상자 클래스에 대한 생성자를 사용하여 스택에서 개체를 생성한 다음, 호출 DoModal 하여 대화 상자 창과 해당 컨트롤을 만듭니다. 모덜리스 대화 상자를 만들려면 대화 상자 클래스의 생성자를 호출 Create 합니다.

Windows SDK에 설명된 대로 DLGTEMPLATE 데이터 구조를 사용하여 메모리에 템플릿을 만들 수도 있습니다. 개체를 생성한 CDialog 후 CreateIndirect를 호출하여 모덜리스 대화 상자를 만들거나 InitModalIndirectDoModal을 호출하여 모달 대화 상자를 만듭니다.

교환 및 유효성 검사 데이터 맵은 새 대화 클래스에 추가되는 재정의 CWnd::DoDataExchange 로 작성됩니다. 교환 및 유효성 검사 기능에 대한 자세한 내용은 DoDataExchange 멤버 함수 CWnd 를 참조하세요.

프로그래머와 프레임워크는 CWnd::UpdateData 호출을 통해 간접적으로 호출 DoDataExchange 합니다.

프레임워크는 사용자가 확인 단추를 클릭하여 모달 대화 상자를 닫을 때 호출 UpdateData 합니다. 취소 단추를 클릭하면 데이터가 검색되지 않습니다. OnInitDialog기본 구현은 컨트롤의 초기 값을 설정하기 위해 호출 UpdateData 합니다. 일반적으로 컨트롤을 추가로 초기화하도록 재정 OnInitDialog 의합니다. OnInitDialog 는 모든 대화 상자 컨트롤을 만든 후 대화 상자가 표시되기 바로 전에 호출됩니다.

모달 또는 모덜리스 대화 상자를 실행하는 동안 언제든지 호출 CWnd::UpdateData 할 수 있습니다.

대화 상자를 직접 개발하는 경우 파생된 대화 상자 클래스에 필요한 멤버 변수를 직접 추가하고 이러한 값을 설정하거나 가져오는 멤버 함수를 추가합니다.

사용자가 확인 또는 취소 단추를 누르거나 코드에서 멤버 함수를 호출할 때 모달 대화 상자가 EndDialog 자동으로 닫힙니다.

모덜리스 대화 상자를 구현하는 경우 항상 멤버 함수를 재정의 OnCancel 하고 그 안에서 호출 DestroyWindow 합니다. 기본 클래스 CDialog::OnCancel는 호출 EndDialog하므로 호출하지 마세요. 그러면 대화 상자가 보이지 않지만 삭제되지는 않습니다. 또한 삭제하기 위해 this모덜리스 대화 상자에 대해 재정 PostNcDestroy 의해야 합니다. 모덜리스 대화 상자는 일반적으로 함께 할당되기 new때문에 삭제해야 합니다. 모달 대화 상자는 일반적으로 프레임에 생성되며 정리가 필요하지 PostNcDestroy 않습니다.

자세한 내용은 CDialog대화 상자를 참조 하세요.

상속 계층 구조

CObject

CCmdTarget

CWnd

CDialog

요구 사항

헤더: afxwin.h

CDialog::CDialog

리소스 기반 모달 대화 상자를 생성하려면 생성자의 공용 형식을 호출합니다.

explicit CDialog(
    LPCTSTR lpszTemplateName,
    CWnd* pParentWnd = NULL);

explicit CDialog(
    UINT nIDTemplate,
    CWnd* pParentWnd = NULL);

CDialog();

매개 변수

lpszTemplateName
대화 상자 템플릿 리소스의 이름인 null로 끝나는 문자열을 포함합니다.

nIDTemplate
대화 상자 템플릿 리소스의 ID 번호를 포함합니다.

pParentWnd
대화 상자 개체가 속한 CWnd 형식의 부모 또는 소유자 창 개체를 가리킵니다. NULL이면 대화 상자 개체의 부모 창이 주 애플리케이션 창으로 설정됩니다.

설명

생성자의 한 형태는 템플릿 이름으로 대화 상자 리소스에 대한 액세스를 제공합니다. 다른 생성자는 일반적으로 IDD_ 접두사(예: IDD_DIALOG1 )를 사용하여 템플릿 ID 번호로 액세스를 제공합니다.

메모리의 템플릿에서 모달 대화 상자를 생성하려면 먼저 매개 변수가 없는 보호된 생성자를 호출 InitModalIndirect한 다음 호출합니다.

위의 메서드 중 하나를 사용하여 모달 대화 상자를 생성한 후 .를 호출 DoModal합니다.

모덜리스 대화 상자를 생성하려면 보호된 형식의 CDialog 생성자를 사용합니다. 모덜리스 대화 상자를 구현하려면 사용자 고유의 대화 상자 클래스를 파생해야 하므로 생성자는 보호됩니다. 모덜리스 대화 상자의 생성은 2단계 프로세스입니다. 먼저 생성자를 호출합니다. 그런 다음 멤버 함수를 Create 호출하여 리소스 기반 대화 상자를 만들거나 메모리의 템플릿에서 대화 상자를 만들기 위해 호출 CreateIndirect 합니다.

CDialog::Create

리소스에서 대화 상자 템플릿을 사용하여 모덜리스 대화 상자를 만들도록 호출 Create 합니다.

virtual BOOL Create(
    LPCTSTR lpszTemplateName,
    CWnd* pParentWnd = NULL);

virtual BOOL Create(
    UINT nIDTemplate,
    CWnd* pParentWnd = NULL);

매개 변수

lpszTemplateName
대화 상자 템플릿 리소스의 이름인 null로 끝나는 문자열을 포함합니다.

pParentWnd
대화 상자 개체가 속한 부모 창 개체(CWnd 형식)를 가리킵니다. NULL이면 대화 상자 개체의 부모 창이 주 애플리케이션 창으로 설정됩니다.

nIDTemplate
대화 상자 템플릿 리소스의 ID 번호를 포함합니다.

Return Value

대화 상자 만들기 및 초기화에 성공한 경우 두 폼 모두 0이 아닌 값을 반환합니다. 그렇지 않으면 0입니다.

설명

생성자 내부에 호출을 Create 배치하거나 생성자가 호출된 후 호출할 수 있습니다.

템플릿 이름 또는 템플릿 ID 번호(예: IDD_DIALOG1)를 통해 대화 상자 템플릿 리소스에 액세스할 수 있도록 두 가지 형식의 Create 멤버 함수가 제공됩니다.

두 폼의 경우 부모 창 개체에 포인터를 전달합니다. pParentWnd가 NULL이면 부모 또는 소유자 창이 주 애플리케이션 창으로 설정된 대화 상자가 만들어집니다.

멤버 함수는 Create 대화 상자를 만든 직후에 반환됩니다.

부모 창을 만들 때 대화 상자가 나타나야 하는 경우 대화 상자 템플릿에서 WS_VISIBLE 스타일을 사용합니다. 그렇지 않으면 호출 ShowWindow해야 합니다. 추가 대화 상자 스타일 및 해당 애플리케이션은 MFC 참조의 Windows SDK 및 창 스타일에서 DLGTEMPLATE 구조를 참조하세요.

함수를 CWnd::DestroyWindow 사용하여 함수에서 만든 대화 상자를 삭제합니다 Create .

예시

void CMyDialog::OnMenuShowSimpleDialog()
{
   //m_pSimpleDialog initialized to NULL in the constructor of CMyDialog class
   m_pSimpleDlg = new CSimpleDlg();
   //Check if new succeeded and we got a valid pointer to a dialog object
   if (m_pSimpleDlg != NULL)
   {
      BOOL ret = m_pSimpleDlg->Create(IDD_SIMPLEDIALOG, this);

      if (!ret) //Create failed.
      {
         AfxMessageBox(_T("Error creating Dialog"));
      }

      m_pSimpleDlg->ShowWindow(SW_SHOW);
   }
   else
   {
      AfxMessageBox(_T("Error Creating Dialog Object"));
   }
}

CDialog::CreateIndirect

메모리의 대화 상자 템플릿에서 모덜리스 대화 상자를 만들려면 이 멤버 함수를 호출합니다.

virtual BOOL CreateIndirect(
    LPCDLGTEMPLATE lpDialogTemplate,
    CWnd* pParentWnd = NULL,
    void* lpDialogInit = NULL);

virtual BOOL CreateIndirect(
    HGLOBAL hDialogTemplate,
    CWnd* pParentWnd = NULL);

매개 변수

lpDialogTemplate
대화 상자를 만드는 데 사용되는 대화 상자 템플릿이 포함된 메모리를 가리킵니다. 이 템플릿은 Windows SDK에 설명된 대로 DLGTEMPLATE 구조 및 제어 정보의 형식입니다.

pParentWnd
대화 상자 개체의 부모 창 개체(CWnd 형식 )를 가리킵니다. NULL이면 대화 상자 개체의 부모 창이 주 애플리케이션 창으로 설정됩니다.

lpDialogInit
DLGINIT 리소스를 가리킵니다.

hDialogTemplate
대화 상자 템플릿을 포함하는 전역 메모리에 대한 핸들을 포함합니다. 이 템플릿은 대화 상자의 DLGTEMPLATE 각 컨트롤에 대한 구조 및 데이터 형식입니다.

Return Value

대화 상자를 만들고 성공적으로 초기화한 경우 0이 아닌 경우 그렇지 않으면 0입니다.

설명

멤버 함수는 CreateIndirect 대화 상자를 만든 직후에 반환됩니다.

부모 창을 만들 때 대화 상자가 나타나야 하는 경우 대화 상자 템플릿에서 WS_VISIBLE 스타일을 사용합니다. 그렇지 않으면 호출 ShowWindow 하여 표시되도록 해야 합니다. 템플릿에서 다른 대화 상자 스타일을 지정하는 방법에 대한 자세한 내용은 Windows SDK의 DLGTEMPLATE 구조를 참조하세요.

함수를 CWnd::DestroyWindow 사용하여 함수에서 만든 대화 상자를 삭제합니다 CreateIndirect .

ActiveX 컨트롤이 포함된 대화 상자에는 DLGINIT 리소스에 제공된 추가 정보가 필요합니다.

CDialog::DoModal

이 멤버 함수를 호출하여 모달 대화 상자를 호출하고 완료되면 대화 상자 결과를 반환합니다.

virtual INT_PTR DoModal();

Return Value

int 대화 상자를 닫는 데 사용되는 CDialog::EndDialog 멤버 함수에 전달된 nResult 매개 변수의 값을 지정하는 값입니다. 함수가 대화 상자를 만들 수 없는 경우 반환 값은 -1이고, 다른 오류가 발생한 경우 IDABORT입니다. 이 경우 출력 창에는 GetLastError오류 정보가 포함됩니다.

설명

이 멤버 함수는 대화 상자가 활성화된 동안 사용자와의 모든 상호 작용을 처리합니다. 이것이 대화 상자를 모달로 만드는 이유입니다. 즉, 사용자가 대화 상자를 닫을 때까지 다른 창과 상호 작용할 수 없습니다.

사용자가 대화 상자에서 확인 또는 취소와 같은 푸시버튼 중 하나를 클릭하면 OnOK 또는 OnCancel과 같은 메시지 처리기 멤버 함수가 호출되어 대화 상자를 닫습니다. 기본 OnOK 멤버 함수는 대화 상자 데이터의 유효성을 검사하고 업데이트하고 결과 IDOK를 사용하여 대화 상자를 닫고, 기본 OnCancel 멤버 함수는 대화 상자 데이터의 유효성을 검사하거나 업데이트하지 않고 결과 IDCANCEL로 대화 상자를 닫습니다. 이러한 메시지 처리기 함수를 재정의하여 동작을 변경할 수 있습니다.

참고 항목

PreTranslateMessage 는 이제 모달 대화 상자 메시지 처리를 위해 호출됩니다.

예시

void CMyDialog::OnMenuShowAboutDialog()
{
   // Construct the dialog box passing the
   // ID of the dialog template resource
   CDialog aboutDlg(IDD_ABOUTBOX);

   // Create and show the dialog box
   INT_PTR nRet = -1;
   nRet = aboutDlg.DoModal();

   // Handle the return value from DoModal
   switch (nRet)
   {
   case -1:
      AfxMessageBox(_T("Dialog box could not be created!"));
      break;
   case IDABORT:
      // Do something
      break;
   case IDOK:
      // Do something
      break;
   case IDCANCEL:
      // Do something
      break;
   default:
      // Do something
      break;
   };
}

CDialog::EndDialog

이 멤버 함수를 호출하여 모달 대화 상자를 종료합니다.

void EndDialog(int nResult);

매개 변수

nResult
대화 상자에서 호출자에게 DoModal반환할 값을 포함합니다.

설명

이 멤버 함수는 nResult를 의 반환 값DoModal으로 반환합니다. 모달 대화 상자가 EndDialog 만들어질 때마다 이 함수를 사용하여 처리를 완료해야 합니다.

OnInitDialog에서도 언제든지 호출 EndDialog 할 수 있습니다. 이 경우 대화 상자가 표시되기 전에 또는 입력 포커스가 설정되기 전에 대화 상자를 닫아야 합니다.

EndDialog 는 대화 상자를 즉시 닫지 않습니다. 대신 현재 메시지 처리기가 반환되는 즉시 대화 상자를 닫도록 지시하는 플래그를 설정합니다.

예시

void CMyDialog::OnMenuShowSimpleModal()
{
   CSimpleDlg myDlg;
   INT_PTR nRet = myDlg.DoModal();

   if (nRet == IDOK || nRet == 5)
   {
      AfxMessageBox(_T("Dialog closed successfully"));
   }
}

 

void CSimpleDlg::OnRButtonUp(UINT nFlags, CPoint point)
{
   UNREFERENCED_PARAMETER(nFlags);
   // Do something

   int nRet = point.x; // Just any value would do!
   EndDialog(nRet);    // This value is returned by DoModal!

   // Do something

   return; // Dialog closed and DoModal returns only here!
}

CDialog::GetDefID

멤버 함수를 GetDefID 호출하여 대화 상자에 대한 기본 푸시버튼 컨트롤의 ID를 가져옵니다.

DWORD GetDefID() const;

Return Value

32비트 값( DWORD)입니다. 기본 푸시버튼에 ID 값이 있는 경우 상위 단어에는 DC_HASDEFID 포함되고 하위 단어에는 ID 값이 포함됩니다. 기본 pushbutton에 ID 값이 없으면 반환 값은 0입니다.

설명

일반적으로 확인 단추입니다.

CDialog::GotoDlgCtrl

대화 상자에서 지정된 컨트롤로 포커스를 이동합니다.

void GotoDlgCtrl(CWnd* pWndCtrl);

매개 변수

pWndCtrl
포커스를 받을 창(컨트롤)을 식별합니다.

설명

pWndCtrl로 전달할 컨트롤(자식 창)에 대한 포인터를 얻으려면 CWnd 개체에 대한 포인터를 반환하는 멤버 함수를 호출CWnd::GetDlgItem합니다.

예시

CWnd::GetDlgItem에 대한 예제를 참조하세요.

CDialog::InitModalIndirect

메모리에서 생성하는 대화 상자 템플릿을 사용하여 모달 대화 상자 개체를 초기화하려면 이 멤버 함수를 호출합니다.

BOOL InitModalIndirect(
    LPCDLGTEMPLATE lpDialogTemplate,
    CWnd* pParentWnd = NULL,
    void* lpDialogInit = NULL);

    BOOL InitModalIndirect(
    HGLOBAL hDialogTemplate,
    CWnd* pParentWnd = NULL);

매개 변수

lpDialogTemplate
대화 상자를 만드는 데 사용되는 대화 상자 템플릿이 포함된 메모리를 가리킵니다. 이 템플릿은 Windows SDK에 설명된 대로 DLGTEMPLATE 구조 및 제어 정보의 형식입니다.

hDialogTemplate
대화 상자 템플릿을 포함하는 전역 메모리에 대한 핸들을 포함합니다. 이 템플릿은 대화 상자의 DLGTEMPLATE 각 컨트롤에 대한 구조 및 데이터 형식입니다.

pParentWnd
대화 상자 개체가 속한 CWnd 형식의 부모 또는 소유자 창 개체를 가리킵니다. NULL이면 대화 상자 개체의 부모 창이 주 애플리케이션 창으로 설정됩니다.

lpDialogInit
DLGINIT 리소스를 가리킵니다.

Return Value

대화 상자 개체를 만들고 성공적으로 초기화한 경우 0이 아닌 경우 그렇지 않으면 0입니다.

설명

모달 대화 상자를 간접적으로 만들려면 먼저 전역 메모리 블록을 할당하고 대화 상자 템플릿으로 채웁니다. 그런 다음 빈 CDialog 생성자를 호출하여 대화 상자 개체를 생성합니다. 다음으로, 메모리 내 대화 상자 템플릿에 핸들을 저장하기 위해 호출 InitModalIndirect 합니다. Windows 대화 상자는 나중에 DoModal 멤버 함수가 호출될 때 만들어지고 표시됩니다.

ActiveX 컨트롤이 포함된 대화 상자에는 DLGINIT 리소스에 제공된 추가 정보가 필요합니다.

CDialog::MapDialogRect

사각형의 대화 상자 단위를 화면 단위로 변환하려면 호출합니다.

void MapDialogRect(LPRECT lpRect) const;

매개 변수

lpRect
변환할 대화 상자 좌표를 포함하는 RECT 구조체 또는 CRect 개체를 가리킵니다.

설명

대화 상자 단위는 대화 상자 텍스트에 사용되는 글꼴에서 문자의 평균 너비와 높이에서 파생된 현재 대화 상자 기본 단위로 표시됩니다. 가로 단위 1개는 대화 상자 기본 너비 단위의 1/4이고 세로 단위는 대화 상자 기본 높이 단위의 1/8입니다.

Windows 함수는 GetDialogBaseUnits 시스템 글꼴에 대한 크기 정보를 반환하지만 리소스 정의 파일에서 DS_SETFONT 스타일을 사용하는 경우 각 대화 상자에 다른 글꼴을 지정할 수 있습니다. Windows 함수는 MapDialogRect 이 대화 상자에 적절한 글꼴을 사용합니다.

멤버 함수는 MapDialogRect 대화 상자를 만들거나 상자 내에 컨트롤을 배치하는 데 사각형을 사용할 수 있도록 lpRect 의 대화 상자 단위를 화면 단위(픽셀)로 바꿉니다.

CDialog::NextDlgCtrl

대화 상자에서 포커스를 다음 컨트롤로 이동합니다.

void NextDlgCtrl() const;

설명

포커스가 대화 상자의 마지막 컨트롤에 있으면 첫 번째 컨트롤로 이동합니다.

CDialog::OnCancel

프레임워크는 사용자가 취소클릭하거나 모달 또는 모덜리스 대화 상자에서 ESC 키를 누를 때 이 메서드를 호출합니다.

virtual void OnCancel();

설명

사용자가 취소를 클릭하거나 ESC 키를 눌러 대화 상자를 닫을 때 작업(예: 이전 데이터 복원)을 수행하도록 이 메서드를 재정의합니다. 기본값은 EndDialog를 호출하고 DoModal이 IDCANCEL을 반환하도록 하여 모달 대화 상자를 닫습니다.

모덜리스 대화 상자에서 취소 단추를 구현하는 경우 메서드를 재정의 OnCancel 하고 그 안에 DestroyWindow를 호출해야 합니다. 기본 클래스 메서드는 호출하므로 호출 EndDialog하지 마세요. 그러면 대화 상자가 보이지 않지만 삭제되지는 않습니다.

참고 항목

Windows XP에서 컴파일된 프로그램에서 개체를 CFileDialog 사용하는 경우 이 메서드를 재정의할 수 없습니다. 자세한 CFileDialog내용은 CFileDialog 클래스를 참조 하세요.

예시

void CSimpleDlg::OnCancel()
{
   // TODO: Add extra cleanup here

   // Ensure that you reset all the values back to the
   // ones before modification. This handler is called
   // when the user doesn't want to save the changes.

   if (AfxMessageBox(_T("Are you sure you want to abort the changes?"),
                     MB_YESNO) == IDNO)
   {
      // Give the user a chance if he has unknowingly hit the
      // Cancel button. If he says No, return. Don't reset. If
      // Yes, go ahead and reset the values and close the dialog.
      return;
   }

   m_nMyValue = m_nPrevValue;
   m_pMyString = NULL;

   CDialog::OnCancel();
}

CDialog::OnInitDialog

이 메서드는 메시지에 대한 응답으로 호출됩니다 WM_INITDIALOG .

virtual BOOL OnInitDialog();

Return Value

애플리케이션이 입력 포커스를 대화 상자의 컨트롤 중 하나로 설정했는지 여부를 지정합니다. 0이 아닌 값을 반환하는 경우 OnInitDialog Windows는 입력 포커스를 대화 상자의 첫 번째 컨트롤인 기본 위치로 설정합니다. 애플리케이션은 입력 포커스를 대화 상자의 컨트롤 중 하나로 명시적으로 설정한 경우에만 0을 반환할 수 있습니다.

설명

Windows는 WM_INITDIALOG 대화 상자가 표시되기 직전에 발생하는 Create, CreateIndirect 또는 DoModal 호출 중에 대화 상자에 메시지를 보냅니다.

대화 상자가 초기화될 때 특수 처리를 수행하려는 경우 이 메서드를 재정의합니다. 재정의된 버전에서 먼저 기본 클래스 OnInitDialog 를 호출하지만 반환 값을 무시합니다. 일반적으로 재정의된 메서드에서 반환 TRUE 됩니다.

Windows는 OnInitDialog 모든 Microsoft Foundation 클래스 라이브러리 대화 상자에 공통된 표준 전역 대화 상자 프로시저를 사용하여 함수를 호출합니다. 메시지 맵을 통해 이 함수를 호출하지 않으므로 이 메서드에 대한 메시지 맵 항목이 필요하지 않습니다.

참고 항목

Windows Vista 이상 운영 체제에서 컴파일된 프로그램에서 개체를 사용하는 CFileDialog 경우 이 메서드를 재정의할 수 없습니다. Windows Vista 이상의 변경 내용 CFileDialog 에 대한 자세한 내용은 CFileDialog 클래스를 참조 하세요.

예시

BOOL CSimpleDlg::OnInitDialog()
{
   CDialog::OnInitDialog();

   // TODO: Add extra initialization here
   m_cMyEdit.SetWindowText(_T("My Name")); // Initialize control values
   m_cMyList.ShowWindow(SW_HIDE);          // Show or hide a control, etc.

   return TRUE; // return TRUE unless you set the focus to a control
   // EXCEPTION: OCX Property Pages should return FALSE
}

CDialog::OnOK

사용자가 확인 단추(ID가 ID가 ID인 단추)를 클릭하면 호출됩니다.

virtual void OnOK();

설명

확인 단추가 활성화될 때 작업을 수행하도록 이 메서드를 재정의합니다. 대화 상자에 자동 데이터 유효성 검사 및 교환이 포함된 경우 이 메서드의 기본 구현은 대화 상자 데이터의 유효성을 검사하고 애플리케이션에서 적절한 변수를 업데이트합니다.

모덜리스 대화 상자에서 확인 단추를 구현하는 경우 메서드를 재정의 OnOK 하고 그 안에 DestroyWindow를 호출해야 합니다. 대화 상자를 보이지 않게 하지만 삭제하지 않는 EndDialog를 호출하므로 기본 클래스 메서드를 호출하지 마세요.

참고 항목

Windows XP에서 컴파일된 프로그램에서 개체를 CFileDialog 사용하는 경우 이 메서드를 재정의할 수 없습니다. 자세한 CFileDialog내용은 CFileDialog 클래스를 참조 하세요.

예시

void CSimpleDlg::OnOK()
{
   // TODO: Add extra validation here

   // Ensure that your UI got the necessary input
   // from the user before closing the dialog. The
   // default OnOK will close this.
   if (m_nMyValue == 0) // Is a particular field still empty?
   {
      // Inform the user that he can't close the dialog without
      // entering the necessary values and don't close the
      // dialog.
      AfxMessageBox(_T("Please enter a value for MyValue"));
      return;
   }

   CDialog::OnOK(); // This will close the dialog and DoModal will return.
}

CDialog::OnSetFont

텍스트를 그릴 때 대화 상자 컨트롤에서 사용할 글꼴을 지정합니다.

Virtual void OnSetFont(CFont* pFont);

매개 변수

pFont
[in] 이 대화 상자에서 모든 컨트롤의 기본 글꼴로 사용할 글꼴에 대한 포인터를 지정합니다.

설명

대화 상자는 지정된 글꼴을 모든 컨트롤의 기본값으로 사용합니다.

대화 상자 편집기에서는 일반적으로 대화 상자 서식 파일 리소스의 일부로 대화 상자 글꼴을 설정합니다.

참고 항목

Windows Vista 이상 운영 체제에서 컴파일된 프로그램에서 개체를 사용하는 CFileDialog 경우 이 메서드를 재정의할 수 없습니다. Windows Vista 이상의 변경 내용 CFileDialog 에 대한 자세한 내용은 CFileDialog 클래스를 참조 하세요.

CDialog::PrevDlgCtrl

대화 상자에서 포커스를 이전 컨트롤로 설정합니다.

void PrevDlgCtrl() const;

설명

포커스가 대화 상자의 첫 번째 컨트롤에 있으면 상자의 마지막 컨트롤로 이동합니다.

CDialog::SetDefID

대화 상자의 기본 푸시 버튼 컨트롤을 변경합니다.

void SetDefID(UINT nID);

매개 변수

nID
기본값이 될 pushbutton 컨트롤의 ID를 지정합니다.

CDialog::SetHelpID

대화 상자의 상황에 맞는 도움말 ID를 설정합니다.

void SetHelpID(UINT nIDR);

매개 변수

nIDR
상황에 맞는 도움말 ID를 지정합니다.

참고 항목

MFC Sample DLGCBR32
MFC 샘플 DLGTEMPL
CWnd 클래스
계층 구조 차트