VC界面的实现,VC界面的实现
【 tulaoshi.com - C语言心得技巧 】
VC界面的实现
      作者:wwei
下载源代码
        微软C++开发工具VC++由于其界面友好,实用而被许多软件开发者所模仿,但是直接用MFC来实现VC界面不仅要耗费大量时间,而且在实现类似VC工具条停靠,拉伸算法,菜单项和工具条按钮自定义功能时,由于涉及到很多关于 MFC      本身实现的细节问题很容易使程序存在各种BUG。本文在实现类似VC界面时,使用了一个MFC扩展界面库SYGUI,从而轻松的实现了VC界面,下图是本文所附例子代码运行时的界面:
      
      
      图一 本文例子运行时的界面 
      
           下面对例子代码作详细说明:      
      
1、为使用SYGUI,你需要在stdafx.h中加入 
#include "sygui.h"2、创建左边和底部的BAR在MainFrame.h中声明
CSYTabBarm_wndWorkSpace; //左边BAR CSYAutoSizeBarm_wndOutput; //底部BAR CSYSheetTabCtrlm_wndTabCtrl; //底部BAR中的TAB控制 TSYNoFlickerControl在MainFrame.cpp中创建左边和底部的BARm_treeClass; //左边BAR中的类视图 TSYNoFlickerControl m_treeResource; //左边BAR中的资源视图 TSYNoFlickerControl m_treeFile; //左边BAR中的文件视图 TSYNoFlickerControl m_editOutput; //底部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)  {       ... //其它代码       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中封装了该功能,因此不需要加入任何代码。来源:http://www.tulaoshi.com/n/20160129/1484114.html