微软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);
... //其它代码
}