现在的位置: 首页 > 综合 > 正文

单独使用CBCGPPropList类

2013年11月08日 ⁄ 综合 ⁄ 共 4000字 ⁄ 字号 评论关闭

 

   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
 }
 m_wndPropList.EnableHeaderCtrl (FALSE);
 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")));
 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);
 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")));
 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);
 pProp = new CBCGPProp ( _T("Width"), (_variant_t) 150l,
       _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);
 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")));
 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);
 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);
 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("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("Time"), date,
  _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);
 CBCGPProp* pGroup411 = new CBCGPProp (_T("Second sub-level"));
 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")));
 pGroup4->Expand (FALSE);
 m_wndPropList.AddProperty (pGroup4);
 m_wndPropList.ShowWindow(SW_SHOW);
     
 

 

抱歉!评论已关闭.