利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏

时间:2022-02-21 00:16:50
这个crebar用起来参数真奇怪, 算了, 直接上代码吧:
先弄一个基于cdialog的类CMyDlgBar,将基类改为cdialogbar, 需要注意必须修改 constructor(没有参数), OnInitDialog(里面需要初始化)
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏class  CMyDlgBar :  public  CDialogBar
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
{
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏    DECLARE_DYNAMIC(CMyDlgBar)
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
public:
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏    CMyDlgBar();   
// standard constructor
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
    virtual ~CMyDlgBar();
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
// Dialog Data
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
    enum { IDD = IDD_DIALOG1 };
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
protected:
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏    
virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏

利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏    DECLARE_MESSAGE_MAP()
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
public:
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏    
virtual BOOL Create(CWnd* pParentWnd, UINT nIDTemplate, UINT nStyle, UINT nID);
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏    
int m_nData;
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏    afx_msg 
void OnBnClickedOk();
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
//    afx_msg void OnBnClickedButton1();
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
    afx_msg void OnBnClickedButton1();
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏    afx_msg LRESULT OnInitDialog(UINT wParam,LONG lParam);
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏    afx_msg 
void OnEnChangeEdit1();
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏}
;

利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
//  CMyDlgBar dialog
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏

利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏IMPLEMENT_DYNAMIC(CMyDlgBar, CDialogBar)
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏CMyDlgBar::CMyDlgBar()
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏    : CDialogBar()
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏    , m_nData(
0 )
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
{
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏}

利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏CMyDlgBar::
~ CMyDlgBar()
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
{
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏}

利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
void  CMyDlgBar::DoDataExchange(CDataExchange *  pDX)
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
{
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏    CDialogBar::DoDataExchange(pDX);
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏}

利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏BEGIN_MESSAGE_MAP(CMyDlgBar, CDialogBar)
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏    ON_BN_CLICKED(IDOK, 
& CMyDlgBar::OnBnClickedOk)
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
//     ON_BN_CLICKED(IDC_BUTTON1, &CMyDlgBar::OnBnClickedButton1)
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
ON_BN_CLICKED(IDC_BUTTON1,  & CMyDlgBar::OnBnClickedButton1)
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏ON_EN_CHANGE(IDC_EDIT1, 
& CMyDlgBar::OnEnChangeEdit1)
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏ON_MESSAGE(WM_INITDIALOG,OnInitDialog)
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏END_MESSAGE_MAP()
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏LRESULT CMyDlgBar::OnInitDialog(UINT wParam,LONG lParam)
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
{
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏    
// TODO: Add extra initialization here
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏

利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏    BOOL bRet 
= HandleInitDialog(wParam,lParam);
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏    
if (!UpdateData(FALSE))
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏    
{
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏        TRACE(
"InitCDataStatus Failed!");
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏    }

利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏    
return TRUE; // return TRUE unless you set the focus to a control
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏    
// EXCEPTION: OCX Property Pages should return FALSE
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏

利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏}

利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
//  CMyDlgBar message handlers
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏

利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏BOOL CMyDlgBar::Create(CWnd
*  pParentWnd, UINT nIDTemplate, UINT nStyle, UINT nID)
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
{
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏    
// TODO: Add your specialized code here and/or call the base class
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏

利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏     CDialogBar::Create(pParentWnd, nIDTemplate, nStyle, nID);
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏     UpdateData(FALSE);
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏     
return TRUE;
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏}

利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
void  CMyDlgBar::OnBnClickedOk()
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
{
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏    
// TODO: Add your control notification handler code here
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
}

利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
// void CMyDlgBar::OnBnClickedButton1()
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
// {
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
//      //  TODO: Add your control notification handler code here
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
// }
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏

利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
void  CMyDlgBar::OnBnClickedButton1()
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
{
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏    
// TODO: Add your control notification handler code here
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
}

利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
void  CMyDlgBar::OnEnChangeEdit1()
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
{
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏    
// TODO:  If this is a RICHEDIT control, the control will not
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏    
// send this notification unless you override the CDialogBar::OnInitDialog()
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏    
// function and call CRichEditCtrl().SetEventMask()
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏    
// with the ENM_CHANGE flag ORed into the mask.
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
    MessageBox(L"Changed");
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏    
// TODO:  Add your control notification handler code here
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
}

利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏

在cmainframe里面定义两个变量
CMyDlgBar m_barAttrib;
    CReBar      m_wndReBar;

必须实现oncreate和oncmdmsg
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
int  CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
{
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏    
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏        
return -1;
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏    
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏    
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏        
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏        
!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏    
{
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏        TRACE0(
"Failed to create toolbar\n");
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏        
return -1;      // fail to create
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
    }

利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏    
if (!m_wndStatusBar.Create(this||
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏        
!m_wndStatusBar.SetIndicators(indicators,
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏          
sizeof(indicators)/sizeof(UINT)))
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏    
{
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏        TRACE0(
"Failed to create status bar\n");
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏        
return -1;      // fail to create
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
    }

利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏    
// TODO: Delete these three lines if you don't want the toolbar to be dockable
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
    if (!m_barAttrib.Create(this,m_barAttrib.IDD, CBRS_ALIGN_RIGHT|CBRS_GRIPPER, m_barAttrib.IDD))
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏    
{
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏        TRACE0(
"Failed to create dialogbar\n");
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏        
return -1;
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏    }

利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏    m_barAttrib.SetWindowText(L
"部件属性");
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏    
/*XXX是一个资源id手工直接在资源的.h文件中添加一条,不会,这里就不教了。
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏        工具条的显示和隐藏代码如下,自己慢慢理解吧:
*/

利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏    
//    ShowControlBar(&m_barAttrib, (m_barAttrib.GetStyle() & WS_VISIBLE) == 0, FALSE);
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏    
//m_wndReBar.Create(this);
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
    m_wndReBar.Create(this,   RBS_AUTOSIZE   |   RBS_BANDBORDERS,
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏        
/*WS_CHILD   |   WS_VISIBLE   |  WS_CLIPSIBLINGS   |   WS_CLIPCHILDREN   | */  CBRS_RIGHT) ;
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏    m_wndReBar.AddBar(
&m_barAttrib,NULL,NULL, RBBS_GRIPPERALWAYS|RBBS_FIXEDBMP);
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏    
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏    
//m_wndReBar.AddBar(&m_wndToolBar,NULL,NULL, RBBS_GRIPPERALWAYS|RBBS_FIXEDBMP);
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
    m_barAttrib.EnableDocking(CBRS_ALIGN_ANY);
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏    
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏    m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏    EnableDocking(CBRS_ALIGN_ANY);
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏    DockControlBar(
&m_barAttrib);
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏    DockControlBar(
&m_wndToolBar);
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏    
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏    
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏    
return 0;
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏}

利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏BOOL CMainFrame::OnCmdMsg(UINT nID, 
int  nCode,  void *  pExtra, AFX_CMDHANDLERINFO *  pHandlerInfo)
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏
{
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏    
// TODO: Add your specialized code here and/or call the base class
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏

利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏    
if(m_barAttrib.OnCmdMsg(nID, nCode, pExtra, pHandlerInfo))
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏        
return TRUE;
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏    
return CFrameWnd::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏}

利用CRebar和CDialogBar编写可浮动的dialog类型的工具栏