VC界面的实现 MFC和VC++ 2008-08-11 17:31:38 阅读34 评论0 字号:大中小 订阅 下载源代码 微软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界面的一种实现
方法
快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载
,因此对这些控制的使用不再作详细介绍,对这些控制感兴趣的读者可通过 wwei@zj165.com和作者交流或访问http://www.sygui.com获取更详细的资料。关于本例子代码的编译可参考例子代码目录中的 (编译说明.txt)。最后希望该文对你有所帮助。 vc ++ 如何做界面开发? 一般的vc++做的程序,效率较高,但是对界面要么开发速度慢,要不做出来的不是很漂亮。 如何呢? 提供两个方法供参 考。 1. 使用界面库 比较常用不错的一个是BCG, 一个是xtreme toolkit. 另外vs2008已经内置BCG xtreme toolkit这个界面库,带的例子比较多,而且是分开的,每个控件都分开有一个例子。 方便使用。 用bcg的直接用 vc2008好了。下载一个package,里面直接集成BCG. 2. 使用Python+wxPython, 使用 Eclipse+PyDev 作为集成开发环境,发布时使用Py2exe进行打包,vc主要写不带界面的内核或逻辑模块。 python也 是google 三大开发语言之一。另外两个是c++和java.