一步一个脚印,走在自己前面!

想想自己5年后会是什么样子……
posts - 34, comments - 25, trackbacks - 0, articles - 6
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

如何做出类似vc的workshop

Posted on 2006-09-12 12:21 仄洛 阅读(127) 评论(0)  编辑 收藏 引用 所属分类: Software development using C++

方法如下:

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)


专题:Android  iPad jQuery Chrome OS

博客园首页  IT新闻  知识库  学英语  C++程序员招聘
标题  
姓名  
主页
验证码 *
内容(提交失败后,可以通过“恢复上次提交”恢复刚刚提交的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
[使用Ctrl+Enter键可以直接提交]
每天10分钟,轻松学英语
网站导航: