2010-06-21 3 views
1

я добавил это в моем файле заголовканайти некоторые ошибки в создании панели инструментов с помощью MFC

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

и я добавил это в .cpp файле

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); 
    } 

я получил эти ошибки :( ошибка C3861 : 'EnableDocking': идентификатор не найден ошибка C3861: 'DockControlBar': идентификатор не найден

ответ

0

на основе BEGIN_MESSAGE_MAP(CtoolbarfDlg, CDialog), ваш CtoolbarfDlg класс наследуется от CDialog, а не от CToolBar. Поскольку EnableDocking() и DockControlBar() являются методами класса CToolBar, для них нет определения для вашего класса, поэтому вы видите эту ошибку.

Если ваш класс действительно наследуется от CToolBar (вы не опубликовали полное объявление класса из вашего .h-файла, так что я точно не знаю), то BEGIN_MESSAGE_MAP должен отражать это, будучи BEGIN_MESSAGE_MAP(CtoolbarfDlg, CToolBar).

Просто, чтобы убедиться, что я ясно, проблемные строки в вашем коде

EnableDocking(CBRS_ALIGN_ANY); 
DockControlBar(&myBar); 

не

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

которые прекрасно, потому что myBar является экземпляром CToolBar.