//1----------------------1--------------1----------1---------
         m_pwndToolBar=new CToolBar;
m_pwndToolBar->Create(this);
m_pwndToolBar->LoadToolBar(IDR_FULLSCREEN);
----------------
CToolBar类的成员函数Creat()原形如下:
virtual BOOL Create(
CWnd* pParentWnd,
DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_BOTTOM,
UINT nID = AFX_IDW_TOOLBAR );
需要调用3个参数,
可是上面这段代码是用this指针来调用的,怎么回事???
//--------------------------------------------------------
//-----2----------2-----2------------2-------2------------
  m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);//1
  EnableDocking(CBRS_ALIGN_ANY);//2
  DockControlBar(&m_wndToolBar);//3
第一句调用EnableDocking();后为什么还要用第二个,接着还来个第3个?
累不累?
我晕,,,,
//--------------------------------------------------------多谢高手能给个详细的阐述。

解决方案 »

  1.   

    第一个问题:
    CWnd* pParentWnd 对应--- this;
    pParentWnd 指m_pwndToolBar 的父窗口,当然是this指针;
    第二个问题:
    msdn 解释的很清楚,你可以查一下;
    m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);//1 是使工具条的任何一边可以停靠;
    EnableDocking(CBRS_ALIGN_ANY);//2 实际上是CFrameWnd::EnableDocking();是使FrameWnd的任何一边可以被停靠;
    DockControlBar(&m_wndToolBar);//3是使工具条停靠在FrameWnd上;
    你可以试着去掉第一句或者第二句,程序都无法运行;
    如果你去掉第三句,那工具条就无法从停靠状态到悬浮状态,就好像被沾住了.