VC界面的实现

 微软C++开发工具VC++由于其界面友好,实用而被许多软件开发者所模仿,但是直接用MFC来实现VC界面不仅要耗费大量时间,而且在实现类似VC工具条停靠,拉伸算法,

吵吵 菜单项和工具条按钮自定义功能 网络编程 时,由于涉及到很多关于 MFC 本身实现的细节问题很容易使

程序存在各种BUG。本文在实现类似VC界面时,使用了一个MFC扩展界面库SYGUI,从而轻松的实现了VC界面,下图是本文所附例子代码运行时的界面:


图一 本文例子运行时的界面 

下面对例子代码作详细说明: 

1、为使用SYGUI,你需要在stdafx.h中加入

#include "sygui.h"
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)    {         ... //其它代码         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界面
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值