需要帮助使用MFC制作工具栏

时间:2010-06-26 02:37:43

标签: c++

我在头文件中添加了这个

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

2 个答案:

答案 0 :(得分:2)

CDialog没有成员EnableDocking或DockControlBar;那些是CFrameWnd的成员。 MFC假设您要将工具栏放入框架窗口,Microsoft从未提供过将它们放入对话框的方法。它可以做到,但你将不得不自己做所有艰苦的工作。

答案 1 :(得分:0)

我发现这篇关于代码项目的文章在我尝试做同样的事情时过去很有用。 codeproject article。 它也来自CDialog - 就像你试图在提供的样本中做的那样。