使用BCG类
智力乐土 2008-08-23 13:19:07 阅读231 评论0 字号:大中小
就是MFC的新风格扩展, 现在已经是新的mfc的一部分了, 看msdn就可以了
BCG中有很多控件,其中属性配置对话框功能很强大,为了单独使用BCG 的属性配置对话框,需要对代码有一些修改,下面是具体步骤如下:
1、 在Stdafx.h中增加BCG的头文件,添加以后在项目使用BCG的任何部分就不在需要增加头文件,代码如下:
#include <BCGCBProInc.h>
2、 修改项目从CWinApp的继承关系,增加从CBCGPWorkspace的继承,如果不增加,在使用BCG的过程中会有一些问题,代码如下:
class CTestControlConfigApp : public CWinApp,
public CBCGPWorkspace
3、 在CWinApp的子类的InitInstance函数中增加如下语句:
AfxOleInit(); // 进行BCG使用控件的初始化
4、 最后为了防止BCG资源泄露,需要在CWinApp的子类中的ExitInstance函数中增加如下语句:
BCGCBProCleanUp ();
5、最后,就可以使用属性配置类了
第一步,声明一个变量CBCGPPropList m_wndPropList;
第二步,在OnCreate或者OnInitDialog函数中初始化,例子代码如下:
CRect rect(159,29,468,376);
if (!m_wndPropList.Create (WS_VISIBLE | WS_CHILD, rect, this, 2))
{
TRACE0("Failed to create Properies Grid /n");
return -1; // fail to create
}
{
TRACE0("Failed to create Properies Grid /n");
return -1; // fail to create
}
m_wndPropList.EnableHeaderCtrl (FALSE);
m_wndPropList.EnableDesciptionArea ();
m_wndPropList.SetVSDotNetLook ();
m_wndPropList.MarkModifiedProperties ();
m_wndPropList.EnableDesciptionArea ();
m_wndPropList.SetVSDotNetLook ();
m_wndPropList.MarkModifiedProperties ();
CBCGPProp* pGroup1 = new CBCGPProp (_T("Appearance"));
pGroup1->AddSubItem (new CBCGPProp (_T("3D Look"), (_variant_t) false,
_T("Specifies the dialog's font will be nonbold and controls will have a 3D border")));
_T("Specifies the dialog's font will be nonbold and controls will have a 3D border")));
CBCGPProp* pProp = new CBCGPProp (_T("Border"), _T("Dialog Frame"),
_T("One of: None, Thin, Resizable, or Dialog Frame"));
pProp->AddOption (_T("None"));
pProp->AddOption (_T("Thin"));
pProp->AddOption (_T("Resizable"));
pProp->AddOption (_T("Dialog Frame"));
pProp->AllowEdit (FALSE);
_T("One of: None, Thin, Resizable, or Dialog Frame"));
pProp->AddOption (_T("None"));
pProp->AddOption (_T("Thin"));
pProp->AddOption (_T("Resizable"));
pProp->AddOption (_T("Dialog Frame"));
pProp->AllowEdit (FALSE);
pGroup1->AddSubItem (pProp);
pGroup1->AddSubItem (new CBCGPProp (_T("Caption"), (_variant_t) _T("About BCGProTest"),
_T("Specifies the text that will be displayed in the dialog's title bar")));
pGroup1->AddSubItem (new CBCGPProp (_T("Caption"), (_variant_t) _T("About BCGProTest"),
_T("Specifies the text that will be displayed in the dialog's title bar")));
m_wndPropList.AddProperty (pGroup1);
CBCGPProp* pSize = new CBCGPProp (_T("Window Size"), 0, TRUE);
pProp = new CBCGPProp (_T("Height"), (_variant_t) 250l,
_T("Specifies the dialog's height"));
pProp->EnableSpinControl (TRUE, 0, 1000);
pSize->AddSubItem (pProp);
_T("Specifies the dialog's height"));
pProp->EnableSpinControl (TRUE, 0, 1000);
pSize->AddSubItem (pProp);
pProp = new CBCGPProp ( _T("Width"), (_variant_t) 150l,
_T("Specifies the dialog's width"));
pProp->EnableSpinControl ();
pSize->AddSubItem (pProp);
_T("Specifies the dialog's width"));
pProp->EnableSpinControl ();
pSize->AddSubItem (pProp);
m_wndPropList.AddProperty (pSize);
CBCGPProp* pGroup2 = new CBCGPProp (_T("Font"));
LOGFONT lf;
CFont* font = CFont::FromHandle ((HFONT) GetStockObject (DEFAULT_GUI_FONT));
font->GetLogFont (&lf);
CFont* font = CFont::FromHandle ((HFONT) GetStockObject (DEFAULT_GUI_FONT));
font->GetLogFont (&lf);
lstrcpy (lf.lfFaceName, _T("Arial"));
pGroup2->AddSubItem (new CBCGPFontProp (_T("Font"), lf, CF_EFFECTS | CF_SCREENFONTS, _T("Specifies the default font for the dialog")));
pGroup2->AddSubItem (new CBCGPProp (_T("Use System Font"), (_variant_t) true, _T("Specifies that the dialog uses MS Shell Dlg font")));
pGroup2->AddSubItem (new CBCGPProp (_T("Use System Font"), (_variant_t) true, _T("Specifies that the dialog uses MS Shell Dlg font")));
m_wndPropList.AddProperty (pGroup2);
CBCGPProp* pGroup3 = new CBCGPProp (_T("Misc"));
pProp = new CBCGPProp (_T("(Name)"), _T("IDD_ABOUT_BOX (dialog)"));
pProp->Enable (FALSE);
pGroup3->AddSubItem (pProp);
pProp = new CBCGPProp (_T("(Name)"), _T("IDD_ABOUT_BOX (dialog)"));
pProp->Enable (FALSE);
pGroup3->AddSubItem (pProp);
CBCGPColorProp* pColorProp = new CBCGPColorProp (_T("Window Color"), RGB (210, 192, 254), NULL, _T("Specifies the default dialog color"));
pColorProp->EnableOtherButton (_T("Other..."));
pColorProp->EnableAutomaticButton (_T("Default"), ::GetSysColor (COLOR_3DFACE));
pGroup3->AddSubItem (pColorProp);
pColorProp->EnableOtherButton (_T("Other..."));
pColorProp->EnableAutomaticButton (_T("Default"), ::GetSysColor (COLOR_3DFACE));
pGroup3->AddSubItem (pColorProp);
static TCHAR BASED_CODE szFilter[] = _T("Icon Files (*.ico)|*.ico|All Files (*.*)|*.*||");
pGroup3->AddSubItem (new CBCGPFileProp (_T("Icon"), TRUE, _T(""), _T("ico"), 0, szFilter, _T("Specifies the dialog icon")));
pGroup3->AddSubItem (new CBCGPFileProp (_T("Icon"), TRUE, _T(""), _T("ico"), 0, szFilter, _T("Specifies the dialog icon")));
pGroup3->AddSubItem (new CBCGPFileProp (_T("Folder"), _T("c://")));
COleDateTime date = COleDateTime::GetCurrentTime ();
pGroup3->AddSubItem (new CBCGPDateTimeProp (_T("Date"), date,
_T("Set a date"), 0, CBCGPDateTimeCtrl::DTM_DATE));
pGroup3->AddSubItem (new CBCGPDateTimeProp (_T("Date"), date,
_T("Set a date"), 0, CBCGPDateTimeCtrl::DTM_DATE));
pGroup3->AddSubItem (new CBCGPDateTimeProp (_T("Time"), date,
_T("Set a time"), 0, CBCGPDateTimeCtrl::DTM_TIME));
_T("Set a time"), 0, CBCGPDateTimeCtrl::DTM_TIME));
m_wndPropList.AddProperty (pGroup3);
CBCGPProp* pGroup4 = new CBCGPProp (_T("Hierarchy"));
CBCGPProp* pGroup41 = new CBCGPProp (_T("First sub-level"));
pGroup4->AddSubItem (pGroup41);
pGroup4->AddSubItem (pGroup41);
CBCGPProp* pGroup411 = new CBCGPProp (_T("Second sub-level"));
pGroup41->AddSubItem (pGroup411);
pGroup41->AddSubItem (pGroup411);
pGroup411->AddSubItem (new CBCGPProp (_T("Item 1"), (_variant_t) _T("Value 1"),
_T("This is a description")));
pGroup411->AddSubItem (new CBCGPProp (_T("Item 2"), (_variant_t) _T("Value 2"),
_T("This is a description")));
pGroup411->AddSubItem (new CBCGPProp (_T("Item 3"), (_variant_t) _T("Value 3"),
_T("This is a description")));
_T("This is a description")));
pGroup411->AddSubItem (new CBCGPProp (_T("Item 2"), (_variant_t) _T("Value 2"),
_T("This is a description")));
pGroup411->AddSubItem (new CBCGPProp (_T("Item 3"), (_variant_t) _T("Value 3"),
_T("This is a description")));
pGroup4->Expand (FALSE);
m_wndPropList.AddProperty (pGroup4);
m_wndPropList.AddProperty (pGroup4);
m_wndPropList.ShowWindow(SW_SHOW);