MFC

2010-06-21 4 views
1
를 사용하여 도구 모음을 만드는 몇 가지 오류를 발견

내가 이러한 오류를 :(가지고MFC

BEGIN_MESSAGE_MAP(CtoolbarfDlg, CDialog) 
    ON_WM_SYSCOMMAND() 
    ON_WM_PAINT() 
    ON_WM_QUERYDRAGICON() 
    ON_WM_CREATE() 
    ON_COMMAND(IDC_TBBUTTON1,OnToolBarButton1) 
    ON_COMMAND(IDC_TBBUTTON2,OnToolBarButton2) 
    //}}AFX_MSG_MAP 
END_MESSAGE_MAP() 

void CtoolbarfDlg::OnToolBarButton1() 
    { 

    } 
    void CtoolbarfDlg::OnToolBarButton2() 
    { 

    } 

int CtoolbarfDlg::OnCreate(LPCREATESTRUCT lpCreateStruct) 
    { 
     if (CDialog::OnCreate(lpCreateStruct) == -1) 
      return -1; 

     if (!myBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP 
      | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC)) 
     { 
      TRACE0("Failed to create toolbar"); 
      return -1; // fail to create 
     } 

    myBar.LoadToolBar(IDR_TOOLBAR1); 
    myBar.EnableDocking(CBRS_ALIGN_ANY); 
    EnableDocking(CBRS_ALIGN_ANY); 
    DockControlBar(&myBar); 
    } 

난 내 헤더 파일

CToolBar myBar; 
public: 
int OnCreate(LPCREATESTRUCT lpCreateStruct); 
void OnToolBarButton1(); 
void OnToolBarButton2(); 

이 추가 그리고 난 .cpp 파일이 추가 오류 C3861 : 'EnableDocking': 식별자를 찾을 수 없습니다. 오류 C3861 : 'DockControlBar': 식별자를 찾을 수 없습니다.

답변

0

을 기반으로하면 CtoolbarfDlg 클래스는 CDialog에서 상속받으며 CToolBar에서는 상속받지 않습니다. EnableDocking()DockControlBar()CToolBar 클래스의 메소드이므로 클래스에 정의가 없으므로이 오류가 표시됩니다.

클래스가 실제로 CToolBar에서 상속을받는 경우 (사용자가 .h 파일에서 전체 클래스 선언을 게시하지 않아 확실하지 않음) BEGIN_MESSAGE_MAP에 BEGIN_MESSAGE_MAP(CtoolbarfDlg, CToolBar)이 반영되어야합니다.

그냥 내가 분명 해요 확인하기 위해, 코드에 문제가있는 줄은 myBar는 CToolBar를 인스턴스이기 때문에 괜찮

EnableDocking(CBRS_ALIGN_ANY); 
DockControlBar(&myBar); 

하지

myBar.LoadToolBar(IDR_TOOLBAR1); 
myBar.EnableDocking(CBRS_ALIGN_ANY); 

입니다.