1、新建一个工程或打开已有工程,打开ClassView视图,点击右键选择New Class,Class type选择Generic Class,
类名为:CWorkspaceBar
基类选择:CBCGPDockingControlBar (默认public继承)
2、打开ClassView视图,选择CMainFrame,打开MainFrm.cpp,在OnCreate()函数中添加:
if (!m_wndWorkSpace.Create (_T("View 1"), this, CRect (0, 0, 210, 210),TRUE, ID_VIEW_WORKSPACE,
WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_RIGHT | CBRS_FLOAT_MULTI))
{
TRACE0("Failed to create Workspace bar/n");
return FALSE; // fail to create
}
m_wndWorkSpace.SetIcon (imagesWorkspace.ExtractIcon (0), FALSE);
m_wndWorkSpace.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
EnableAutoHideBars(CBRS_ALIGN_ANY);
DockControlBar (&m_wndWorkSpace);
3、打开MainFrm.h,添加:
#include "WorkspaceBar.h"
public:
CWorkspaceBar m_wndWorkSpace;
4、在WorkspaceBar.h中添加:
protected:
CCamera* cc; //CCamera为对话框类,需要将CCamera对话框放置在WorkspaceBar之上
public:
virtual BOOL CanBeClosed()const{ return FALSE;}; //禁止关闭
virtual BOOL CanFloat()const{return FALSE;}; //禁止浮动
// Generated message map functions
protected:
//{{AFX_MSG(CWorkspaceBar)
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnSize(UINT nType, int cx, int cy);
afx_msg void OnPaint(); //点击类右键->Add Windows Messages Handle添加WM_CREATE、WM_PAINT、WM_SIZE
//}}AFX_MSG
5、在WorkspaceBar.cpp中添加:
#include "camera.h" //需要放置在WorkspaceBar之上的对话框文件
在构造函数中添加:
CWorkspaceBar::CWorkspaceBar()
{
CRuntimeClass* pFactory = RUNTIME_CLASS(CCamera);
cc = (CCamera *)(pFactory->CreateObject());
}
int CWorkspaceBar::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CBCGPDockingControlBar::OnCreate(lpCreateStruct) == -1)
return -1;
CRect rect;
GetClientRect (rect);
CRect ccRect;
ccRect.left=rect.left;
ccRect.top=rect.top;
ccRect.right=(long)(rect.right);
ccRect.bottom=rect.bottom;
if (cc!= NULL)
{
cc->CreateView(this,NULL,ccRect);
}
return 0;
}
void CWorkspaceBar::OnSize(UINT nType, int cx, int cy)
{
CBCGPDockingControlBar::OnSize(nType, cx, cy);
}
void CWorkspaceBar::OnPaint()
{
CPaintDC dc(this); // device context for painting
CRect rect;
GetClientRect (rect);
CRect ccRect;
ccRect.left=rect.left;
ccRect.top=rect.top;
ccRect.right=(long)(rect.right);
ccRect.bottom=rect.bottom;
cc->MoveWindow(&ccRect,TRUE );
}
6、新建一个对话框,并在此对话框上放置相应的控件。并为此对话框新建类CCamera(CCamera类继承于CFormView),对话框中的具体操作不再一一详述。整个BCGControlBar的使用方法就是这样,也不知道漏掉什么没有,(*^__^*) 嘻嘻……