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

기술 자료 번역 기술 자료 번역
기술 자료: 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
             //{{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)
    
             //{{AFX_MSG_MAP(CMyDlgBar)
             ...
             //}}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클래스 목록에 클래스를 파생시키는 방법

속성

기술 자료: 185672 - 마지막 검토: 2006년 11월 21일 화요일 - 수정: 3.1
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Foundation Class Library 4.2?을(를) 다음과 함께 사용했을 때
    • Microsoft Visual C++ 5.0 Enterprise Edition
    • Microsoft Visual C++ 6.0 Enterprise Edition
    • Microsoft Visual C++ 5.0 Professional Edition
    • Microsoft Visual C++ 6.0 Professional Edition
    • Microsoft Visual C++, 32-bit Learning Edition 6.0
키워드:?
kbmt kbhowto kbmfcctrlbar kbuidesign kbwizard KB185672 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com