【UI-BCG】BCG相关类派生及创建方法

1、CBCGPStatusBar 状态栏m_wnd  (不可加入布局)
BCGPStatusBar.h
static UINT indicators[] =
{
	ID_SEPARATOR,           // status line indicator
	ID_INDICATOR_CAPS,
	ID_INDICATOR_NUM,
	ID_INDICATOR_SCRL,
};
if (!m_wnd.Create(this) ||
	!m_wnd.SetIndicators(indicators,
		  sizeof(indicators)/sizeof(UINT)))
	{
		TRACE0("Failed to create status bar\n");
		return -1;      // fail to create
	}
m_wnd.SetBarStyle (m_wnd.GetBarStyle () & ~CBRS_GRIPPER);
2、CBCGPMenuBar 菜单栏m_wnd(可加入布局)
BCGPMenuBar.h
	if (!m_wnd.Create (this))
	{
		TRACE0("Failed to create menubar\n");
		return -1;      // fail to create
	}
	m_wnd.SetBarStyle(m_wnd.GetBarStyle() | CBRS_SIZE_DYNAMIC);
	m_wnd.SetBarStyle (m_wnd.GetBarStyle () & ~CBRS_GRIPPER);
	DockControlBar(&m_wnd);(布局)
	3、CBCGPToolBar 工具栏 m_wnd
	BCGPToolBar.h
	//IDR_TOOLBAR_MAIN(可以是系统菜单,也可以是自定义菜单)
	//ID_FILE_NEW(按钮ID)
	//IDB_STANDARD_TOOLBARNEW(自定义图片Png 【32*n】*32)
		CClientDC dc (this);
	BOOL bIsHighColor = dc.GetDeviceCaps (BITSPIXEL) > 8;
	UINT uiToolbarHotID = bIsHighColor ? IDB_STANDARD_TOOLBARNEW : 0;
		if (!m_wnd.CreateEx(this, TBSTYLE_BUTTON, WS_CHILD | WS_VISIBLE | CBRS_TOP
		| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC,CRect(1,1,1,1)) ||
		!m_wnd.LoadToolBar(IDR_TOOLBAR_MAIN, 0, 0, FALSE, 0, 0, uiToolbarHotID))
	{
		TRACE0("Failed to create toolbar\n");
		return -1;      // fail to create
	}
	//替换工具栏上的按钮
	m_wnd.ReplaceButton(ID_FILE_NEW,CToolbarLabel(ID_FILE_NEW,_T("")));
	//控制下拉按钮
	m_wnd.EnableCustomizeButton (TRUE, (UINT)-1, _T("More Items"));
	//获得工具栏的名称
	m_wndToolBar.GetWindowText(str);
	//以下在app.InitInstance中写才有效
	///设置第一个按钮名称
	pMainFrame->m_wnd.SetButtonText(0,L"")
	///启动时隐藏工具栏
	pMainFrame->m_wnd.ShowControlBar(0,0,0)
	4、CBCGPDialogBar 自定义窗口 (派生使用) m_wnd
	BCGPDialogBar.h
	///IDD_FLOW_BAR 控件ID
		if (!m_wnd.Create(_T("设计流程导航"), this, TRUE, IDD_FLOW_BAR, 
		WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT | CBRS_BCGP_CLOSE ,
		ID_VIEW_WORKSPACE))
	{
		TRACE0("Failed to create task pane\n");
		return -1;
	}
	//图片列表
	///IDB_WORKSPACE 图片ResourceId
	
		CBCGPToolBarImages imagesWorkspace;
	imagesWorkspace.SetImageSize (CSize (16, 16));
	imagesWorkspace.SetTransparentColor (RGB (255, 0, 255));
	imagesWorkspace.Load (IDB_WORKSPACE);
	imagesWorkspace.SmoothResize(globalData.GetRibbonImageScale());
	//设置当前停靠状态
	m_wnd.EnableDocking (CBRS_ALIGN_LEFT);
	m_wnd.SetIcon (imagesWorkspace.ExtractIcon (0), FALSE);
	//加入布局
	DockControlBar(&m_wnd);
	//统一窗口风格
	EnableVisualManagerStyle(1);
	//初始化对话框
	afx_msg LRESULT HandleInitDialog(WPARAM, LPARAM);
	ON_MESSAGE(WM_INITDIALOG, HandleInitDialog)
	LRESULT CFlowBar::HandleInitDialog( WPARAM wParam, LPARAM lParam )
{
	
	LRESULT lRes = CBCGPDialogBar::HandleInitDialog(wParam, lParam);
	ASSERT(m_lbFlow.GetSafeHwnd());
	//m_btnReset.SetImage (IDB_RESET);
	
	CImageList il;
	CBCGPPngImage flow;
	//IDB_FLOW
	if (flow.Load (IDB_PNG_YESNO))
	{
		CBCGPToolBarImages::PreMultiplyAlpha((HBITMAP)flow.GetSafeHandle(), FALSE);

		il.Create (32, 32, ILC_COLOR32, 0, 0);
		il.Add (&flow, (CBitmap*) NULL);
		m_lbFlow.SetImageList(il.Detach());
	}

	CBitmap bmp;
	if (bmp.LoadBitmap (IDB_PART_TREE_NEW))
	{
		m_ilPart.Create (16, 16, ILC_COLOR24 | ILC_MASK, 6, 1);
		m_ilPart.Add (&bmp, (CBitmap*) NULL);

		m_partTree.SetImageList (&m_ilPart, TVSIL_NORMAL);
	}
	CBCGPStaticLayout* pLayout = (CBCGPStaticLayout*)GetLayout ();
	if (pLayout != NULL)
	{
		pLayout->AddAnchor (IDC_LB_FLOW, CBCGPStaticLayout::e_MoveTypeNone, CBCGPStaticLayout::e_SizeTypeBoth);
		pLayout->AddAnchor (IDC_PART, CBCGPStaticLayout::e_MoveTypeVert, CBCGPStaticLayout::e_SizeTypeHorz);
	}
	
	return lRes;
}
5、CBCGPDockingControlBar 停靠对话框 m_wnd
		BCGPDockingControlBar.h
	///	ID_VIEW_KNOWLEDGE 控件ID
if (!m_wnd.Create (_T("设计知识索引"), this, CRect (0, 0, 200, 200),
		TRUE, ID_VIEW_KNOWLEDGE,
		WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_RIGHT | CBRS_FLOAT_MULTI))
	{
		TRACE0("Failed to create Workspace bar\n");
		return -1;      // fail to create
	}
	m_wnd.SetIcon (imagesWorkspace.ExtractIcon (1), FALSE);
	//m_wnd2 另外一个停靠对话框 ,进行相对布局
	m_wnd.DockToWindow(&m_wnd2,CBRS_BOTTOM);
	
6、CBCGPPropList 属性列表控件 m_wnd
BCGPPropList.h
	if (!m_wnd.Create (WS_VISIBLE | WS_CHILD, rectDummy, this, 1))
	{
		TRACE0("Failed to create Properies Grid \n");
		return -1;      // fail to create
	}	
	m_wnd.EnableHeaderCtrl(FALSE);
	m_wnd.EnableDescriptionArea();
	m_wnd.SetVSDotNetLook();
	m_wnd.MarkModifiedProperties();
	m_wnd.EnableDescriptionArea(FALSE);
	//移除所有
	m_wnd.RemoveAll();
	AddProperty();添加组
CBCGPProp	      数值控件、组控件
CBCGPPropF(_T("位置(mm)"),_variant_t(112.13), _T(""));//值
CBCGPPropF(_T("信息"));//组
 AddSubItem()添加子属性
CBCGPColorProp    颜色控件
CBCGPColorProp(_T("颜色"), RGB(255,255,255), NULL, _T("绘制颜色"));

CBCGPDateTimeProp 时间控件

7、CBCGPToolBarImages  图片列表
\BCGPToolBarImages.h
	if (CBCGPToolBar::GetUserImages () == NULL)
	{
		// Load toolbar user images:
		if (!m_UserImages.Load (_T(".\\UserImages.bmp")))
		{
			TRACE(_T("Failed to load user images\n"));
		}
		else
		{
			CBCGPToolBar::SetUserImages (&m_UserImages);
		}
	}
用在OnCreate函数之后,在构造视图对象和产生视图窗口之前
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)

8、CBCGPWorkspace
      BCGPWorkspace.h
	  class CArdsApp : public CWinApp,public CBCGPWorkspace
	  9、CBCGPMDIFrameWnd 主窗口
	BCGPMDIFrameWnd.h
		CMainFrame* pMainFrame = new CMainFrame;

	if (!pMainFrame->LoadFrame(IDR_MainTYPE))
		return FALSE;
	m_pMainWnd = pMainFrame;
	
10、CMultiDocTemplate* m_pDocTemplate;//doc模板
	搭建一个自定义框架  【doc、Childframe、view】
	///IDR_MainTYPE 程序生成的总type
	m_pDocTemplate = new CMultiDocTemplate(IDR_MainTYPE,
		RUNTIME_CLASS(CArdsDoc),
		RUNTIME_CLASS(CChildFrame), // 自定义 MDI 子框架
		RUNTIME_CLASS(CMYView));
11、CBCGPPropertySheet 上一步、下一步对话框m_parentSheet
AddPage(&page);
CBCGPPropertyPage  对话框
virtual LRESULT OnWizardNext();
//下一步
LRESULT CNewWarheadPage::OnWizardNext()
{
	// TODO: 在此添加专用代码和/或调用基类
	m_parentSheet->AddPage(&Page2);
	return CBCGPPropertyPage::OnWizardNext();
}
	virtual BOOL OnSetActive();
	//设置当前活动窗口 的按钮类型
BOOL CNewPage::OnSetActive()
{
	// TODO: 在此添加专用代码和/或调用基类
	((CBCGPPropertySheet*)GetParent())->SetWizardButtons(PSWIZB_NEXT );
	return CBCGPPropertyPage::OnSetActive();
}

12、CBCGPPngImage 图片 png

	if (png.Load (IDB_PNG_SHEET_PAGE1))
	{
		CBCGPToolBarImages::PreMultiplyAlpha((HBITMAP)png.GetSafeHandle(), FALSE);
		CImageList il;
		il.Create (32, 32, ILC_COLOR24, 0, 0);
		il.Add (&pngLarge, (CBitmap*) NULL);
		m_lbWarhead.SetImageList(il.Detach());
	}
	13、CBCGPGridCtrl 列表控件
	virtual CString GetGroupName (int nGroupCol, CBCGPGridItem* pItem);
	//设置组信息
	TCHAR gDyMDTypeName[2][64]={
	_T(" 主参数"),
	_T("从参数"),
};
	CString CIndexGrid::GetGroupName( int nGroupCol, CBCGPGridItem* pItem )
{
	if(nGroupCol== 4)
	{
		CString strCmp;
		strCmp= pItem->GetValue();
		for(int i=0;i<2; i++)
		{
			if(strCmp.Compare(gDyIndexTypeName[i])== 0)
				return 	strCmp;
		}

	}
	return CBCGPGridCtrl::GetGroupName(nGroupCol,pItem);
}
	virtual void OnItemChanged(CBCGPGridItem* pItem, int nRow, int nColumn);
	void CGrid::OnItemChanged( CBCGPGridItem* pItem, int nRow, int nColumn )
{
	if(m_iGridType)
		SNDMSG(GetParent()->GetSafeHwnd(),SHL_DNDTARGET_CHANED_MSG,WPARAM(pItem),0);
	
	return CBCGPGridCtrl::OnItemChanged(pItem,nRow,nColumn);
}
     afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
	 
int CGrid::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CBCGPGridCtrl::OnCreate(lpCreateStruct) == -1)
		return -1;

	// TODO:  在此添加您专用的创建代码

	CBCGPGridColors theme;
	CBCGPVisualManager::GetInstance ()->OnSetGridColorTheme (this,theme);
	SetColorTheme (theme);
	SetWholeRowSel (TRUE);
	SetSingleSel (TRUE);
	SetWholeRowSel (FALSE);
	EnableMarkSortedColumn (FALSE);
	EnableHeader (TRUE, BCGP_GRID_HEADER_SELECT );
	numeric_limits<double> ;
	SetClearInplaceEditOnEnter (FALSE);
	EnableInvertSelOnCtrl ();

	DeleteAllColumns();
	InsertColumn (0, _T(""), 50);
	InsertColumn (1, _T("限制条件"), 50);
	//SetColumnAlign(1,HDF_CENTER);
	InsertColumn (2, _T("取值"), 50);
	//SetColumnAlign(2,HDF_CENTER);
	InsertColumn (3, _T("单位"), 50);
	//SetColumnAlign(3,HDF_CENTER);
	InsertColumn (4, _T("type"), 50);
	SetColumnVisible(4,FALSE);
	for(int i=0;i<GetColumnCount();i++)
	{
		SetHeaderAlign(i,HDF_CENTER);
	}
	InsertGroupColumn(0,4);
	EnableColumnAutoSize();

	return 0;
	}
	//创建单个子项目 -下拉选框
	TCHAR gDx[3][64]={            //等效靶板类型
	_T("<"),
	_T("="),
	_T(">")
};
	CBCGPGridItem* pItem = new CBCGPGridItem(gDx[iType+1]);
	for(int i=0; i<3; i++)
		pItem->AddOption (gDx[i], 1);
	pItem->SetData(COB_TYPE_COMPARE);
	pItem->SetReadOnly(TRUE);
	pItem->GetData();//获取未显示数据
	pItem->GetValue();//获取显示数据
	CBCGPGridRow 行nRow
	nRow->GetItem(1) 第n行第一个
	
	
	
	
	

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值