我在我的头文件中添加了这个

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”:找不到标识符

最佳答案

基于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实例。

09-07 06:57