Zero Lee的专栏

如何做出类似vc的workshop

方法如下:

1.  scbarg.h scbarg.cpp sizecbar.h sizecbar.cpp mybar.h mybar.cpp 文件 copy 到你的工程目录下,打开 vc ,将这几个文件添加进工程。

2.  打开 stdafx.h 文件,在其中加入: #include "sizecbar.h" #include "scbarg.h"

3.  CmainFrame 类添加成员变量: CMyBar        m_wndMyBar

4.  重载 CMainFrame::DestroyWindow() ,在其中加入

       CString sProfile(_T("BarState"));

       m_wndMyBar.SaveState(sProfile);

SaveBarState(sProfile);

5.  修改 CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) 如下:

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)

{

       if (CFrameWnd::OnCreate(lpCreateStruct) == -1)

              return -1;

      

       if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP

              | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||

              !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))

       {

              TRACE0("Failed to create toolbar\n");

              return -1;      // fail to create

       }

 

       if (!m_wndStatusBar.Create(this) ||

              !m_wndStatusBar.SetIndicators(indicators,

                sizeof(indicators)/sizeof(UINT)))

       {

              TRACE0("Failed to create status bar\n");

              return -1;      // fail to create

       }

       if (!m_wndMyBar.Create(_T("My Bar"), this, 123))

       {

           TRACE0("Failed to create mybar\n");

           return -1;      // fail to create

       }

       // TODO: Delete these three lines if you don't want the toolbar to

       //  be dockable

       m_wndMyBar.SetBarStyle(m_wndMyBar.GetBarStyle() |

       CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);

       m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);

       m_wndMyBar.EnableDocking(CBRS_ALIGN_ANY);

       EnableDocking(CBRS_ALIGN_ANY);

       DockControlBar(&m_wndToolBar);

       DockControlBar(&m_wndMyBar, AFX_IDW_DOCKBAR_LEFT);

       CString sProfile(_T("BarState"));

       if (VerifyBarState(sProfile))

       {

           m_wndMyBar.LoadState(sProfile);

           LoadBarState(sProfile);

       }

       return 0;

}

注:红色字体部分为所加内容。

6.  在“查看”菜单下添加菜单项 mybar ,设其 id 为: ID_VIEW_MYBAR.

7.  为其添加 CMainFrame::OnViewMybar() CMainFrame::OnUpdateViewMybar(CCmdUI* pCmdUI) 函数,内容为:

void CMainFrame::OnViewMybar()

{

       // TODO: Add your command handler code here

       BOOL bShow = m_wndMyBar.IsVisible();

       ShowControlBar(&m_wndMyBar, !bShow, FALSE);

}

void CMainFrame::OnUpdateViewMybar(CCmdUI* pCmdUI)

{

       // TODO: Add your command update UI handler code here

       pCmdUI->Enable();

       pCmdUI->SetCheck(m_wndMyBar.IsVisible());

}

编译运行即可,如果你想改变 workshop 中的 cedit 成员变量(如本例 workshop 中的树),只需改变 mybar 中的代码即可。
下载连接:CMyBar.rar(http://www.cppblog.com/zerolee/admin/Files.aspx)

posted on 2006-09-12 12:21 Zero Lee 阅读(350) 评论(0)  编辑 收藏 引用 所属分类: CC++ Programming


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理