龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VC开发 >

VC界面的实现[图](2)

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
2、创建左边和底部的BAR在MainFrame.h中声明 CSYTabBar m_wndWorkSpace; //左边BAR CSYAutoSizeBar m_wndOutput; //底部BAR CSYSheetTabCtrl m_wndTabCtrl; //底部BAR中的TAB控制 TSYNoFlick
  2、创建左边和底部的BAR在MainFrame.h中声明

CSYTabBar  m_wndWorkSpace; //左边BAR
 CSYAutoSizeBar  m_wndOutput; //底部BAR
 CSYSheetTabCtrl  m_wndTabCtrl; //底部BAR中的TAB控制
 TSYNoFlickerControl m_treeClass; //左边BAR中的类视图
 TSYNoFlickerControl m_treeResource; //左边BAR中的资源视图
 TSYNoFlickerControl m_treeFile; //左边BAR中的文件视图
 TSYNoFlickerControl m_editOutput; //底部BAR中的编辑视图 
  在MainFrame.cpp中创建左边和底部的BAR

CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
 {
  .... //其它代码
  //create WorkSpace Bar
  if (!m_wndWorkSpace.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
  | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC,
   CRect(0,0,100,100),1000))
  {
  return -1;
  }
  m_wndWorkSpace.SetImage(m_pImgTree);
  CreateClassView();
  CreateResourceView();
  CreateFileView();
  
  m_wndWorkSpace.AddView(&m_treeClass,FALSE,0);
  m_wndWorkSpace.AddView(&m_treeResource,FALSE,7);
  m_wndWorkSpace.AddView(&m_treeFile,FALSE,14);
  m_wndWorkSpace.SetActiveView(1);
  //Create Output Bar
  if (!m_wndOutput.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
  | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC,
  CRect(0,0,100,100),1001))
  {
  return -1;
  }
  CreateEditView();
  m_wndOutput.AddView(&m_editOutput);
  ... //其它代码
  
  m_wndWorkSpace.EnableDocking(CBRS_ALIGN_ANY);
  DockControlBar(&m_wndWorkSpace,AFX_IDW_DOCKBAR_LEFT);
  m_wndOutput.EnableDocking(CBRS_ALIGN_ANY);
  DockControlBar(&m_wndOutput,AFX_IDW_DOCKBAR_BOTTOM);
  
  ... //其它代码 
}
  3、保存/恢复BAR布局状态,在MainFrame.cpp中加入以下语句

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
 {
    ... //其它代码---www.bianceng.cn
    LoadBars("Bars.dat"); //恢复布局
  }
 
  void CMainFrame::OnClose()
  {
    SaveBars("Bar.data"); //保存布局
    CMDIFrameWnd::OnClose();
  }   
  4、有效类似.Net中的MDITab,在MainFrame.cpp中加入以下语句:

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
 {
    ... //其它代码
    EnabledMDITab(2,TRUE);  //有效MDITAB,TRUE: MDIChild保持最大化
    EnableMDITabColor(TRUE); //使用OneNotes风格的彩色标签
  }  
  5、界面风格设定,本例子使用了Office2003风格,如果你不喜欢可在VisualstudioApp.cpp中将以下三行注释掉

BOOL CVisualstudioApp::InitInstance()
 {
   ... //其它代码
   
   CSYDrawMgrOffice2003* pDM2003 = new CSYDrawMgrOffice2003;
   pDM2003->SetAutoDel();
   CSYGUIMgr::S_SetDrawMgr(pDM2003);
 
   ... //其它代码
}
  6、工具条按钮和菜单项的自定义功能,由于SYGUI中封装了该功能,因此不需要加入任何代码。

  结束语

  在本文的例子中还使用了SYGUI库中的TaskPane,PropertyGridCtrl,FontComboBox等控制,由于本文主要是介绍VC界面的一种实现方法,因此对这些控制的使用不再作详细介绍,对这些控制感兴趣的读者可通过 wwei@zj165.com和作者交流或访问http://www.sygui.com获取更详细的资料。关于本例子代码的编译可参考例子代码目录中的 (编译说明.txt)。最后希望该文对你有所帮助。

精彩图集

赞助商链接