현재 오프라인 상태입니다. 인터넷에 다시 연결하기를 기다리고 있습니다.

파생된 CDialogBar 자식 컨트롤을 초기화하는 방법을

중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

185672
요약
MFC의 인쇄 미리 비슷한 유일한 CButtons 하나로 같은 간단한 CDialogBar 만들 때 CControlBar 부모 자식 컨트롤에서 알림 메시지 받기 때문에 CDialogBar에서 파생시키는 데 필요하지 않습니다.

그러나 드롭다운 콤보 상자, 트리 보기, 또는 ActiveX 컨트롤을 가질 수 있는 있는 더 복잡한 CDialogBar의 경우, 자식 컨트롤에 대한 초기화 제공하도록 CDialogBar 파생시키는 데 유용할 수 있습니다.

클래스 CDialogBar에서 클래스를 파생시킬 지원하지 않기 때문에 이 문서에서는 CDialog에서 클래스를 만들고 다음 "클래스를 위해 CDialogBar 변환" 데 필요한 단계를 설명합니다.
추가 정보
시작하려면 사용할 자식 컨트롤과 CDialog 클래스를 만듭니다. 다음 9개의 단계를 사용하여 CDialogBar 클래스로 CDialog 클래스를 변환할 수 있습니다.

  1. 기본 클래스가 CDialog에서 CDialogBar 위해 클래스 선언에 변경하십시오. 또한 BEGIN_MESSAGE_MAP .cpp 파일에서 기본 클래스에서 변경할 것을 잊지 마십시오.
  2. 생성자를 사용하여 .h 및 .cpp 파일을 변경하십시오. 또한 DoDataExchange()로 변경하십시오. 다음은 세 개의 항목을 변경할 수 있습니다.

          CMyDlgBar (CWnd* pParent = NULL);   // standard constructor      CMyDlgBar:: CMyDlgBar (CWnd* pParent /*=NULL*/)         : CDialog(CMyDlgBar::IDD, pParent)      {         ...      void CMyDlgBar::DoDataExchange(CDataExchange* pDX)      {         CDialog::DoDataExchange(pDX);         ...					
    다음:
          CMyDlgBar ();   // standard constructor      CMyDlgBar:: CMyDlgBar ()      {         ...      void CMyDlgBar::DoDataExchange(CDataExchange* pDX)      {         CDialogBar::DoDataExchange(pDX);         ...					
    OnInitDialog 메서드를 변경하여 및 ON_MESSAGE() 처리기를 추가하여 변환을 위해 키 WM_INITDIALOG 매핑된 메시지 메서드 가상 OnInitDialog() 멤버 함수 변환하는 것입니다. OnInitDialog() 재정의하는 가질 수 없습니다. 그렇지 않은 경우 계속하기 전에 하나를 추가합니다.
  3. "가상 BOOL OnInitDialog();" 제거 에서 클래스 헤더 및 추가 "afx_msg LONG OnInitDialog (UINT, LONG);" 그 곳에서. 예를 들어,:
          class CMyDlgBar : public CDialogBar      {         ...      // Implementation      protected:         // Generated message map functions         //<AngularNoBind>{{</AngularNoBind>AFX_MSG(CMyDlgBar)         virtual BOOL OnInitDialog();                // <-Remove this line.         //}}AFX_MSG         afx_msg LONG OnInitDialog ( UINT, LONG );   // <-Add this line.         DECLARE_MESSAGE_MAP()      };						
    지금, 클래스 구현 섹션에서 해당 내용을 변경합니다.
  4. "ON_MESSAGE (WM_INITDIALOG, OnInitDialog);" 추가 구현 .CPP 파일에 메시지 맵에. 예를 들어,:
          BEGIN_MESSAGE_MAP(CMyDlgBar, CDialogBar)         //<AngularNoBind>{{</AngularNoBind>AFX_MSG_MAP(CMyDlgBar)         ...         //<AngularNoBind>}}</AngularNoBind>AFX_MSG_MAP         ON_MESSAGE(WM_INITDIALOG, OnInitDialog )    // <-- Add this line.      END_MESSAGE_MAP()						
    지금, 가상 OnInitDialog() 메시지 매핑된 OnInitDialog() 위해 변환.
  5. 다음과 같이 OnInitDialog() 변환 만들기:
       Change the following:      BOOL CMyDlgBar::OnInitDialog()      {         CDialog::OnInitDialog();   // <-- Replace this line:            ...						
    다음:
    LONG CMyDlgBar::OnInitDialog ( UINT wParam, LONG lParam)         {                          // <-- with these lines. -->            BOOL bRet = HandleInitDialog(wParam, lParam);            if (!UpdateData(FALSE))            {               TRACE0("Warning: UpdateData failed during dialog init.\n");            }            ...            return bRet;						
    있는 CDialogBar 클래스의 가상 OnInitDialog() 없고 따라서 하나를 호출하는 작동하지 않습니다. UpdateData 서브클래싱하려면 호출되거나 모든 자식 컨트롤을 초기화합니다.
  6. 대화 상자 리소스 스타일의 다음을 확인하십시오.
    스타일: 자식
    boarder: 없음
    표시: 확인되지 않은
    이 모든 것이 제대로 변환에서 CDialog 클래스 CDialogBar 클래스 수 있도록 연결되었습니다 않은. 지금 만들고 이를 사용하십시오.
  7. 파생된 CDialogBar 인스턴스 (보통 CMainFrame) CframeWnd 파생된 클래스에 추가하십시오. 예를 들어,:
          class CMainFrame : public CFrameWnd      {          ...          CMyDlgBar m_myDlgBar;          ...      };					
  8. 만들기 메서드를 CFrameWnd::OnCreate() 메서드는 m_myDlgBar 변수에 대해 다음과 비슷한 호출할:
          int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)      {         ...         if (!m_myDlgBar.Create(this, IDD_DLGBAR1, CBRS_LEFT,            IDD_DLGBAR1))         {            TRACE0("Failed to create dialog bar\n");            return -1;      // fail to create         }         ...      }					
  9. 마지막으로, 동적 도킹 및 중 CDialogBar 크기 조정을 지원하는 경우 CMainFrame::OnCreate() 끝에 다음 줄을 추가합니다:
          int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)      {         ...         m_myDlgBar.SetBarStyle(m_wndToolBar.GetBarStyle() |            CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);         m_myDlgBar.EnableDocking(CBRS_ALIGN_ANY);         DockControlBar(&m_myDlgBar);         return 0;      }
참조
추가 정보는 다음 문서 번호를 클릭하여 Microsoft 기술 자료에서 확인하십시오:
99161클래스 목록에 클래스를 파생시키는 방법