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);

  ... //其它代码
}

时间: 2024-11-03 23:42:48

VC界面的实现的相关文章

vc-VC、Matlab混合编程之VC界面上显示Matlab窗口

问题描述 VC.Matlab混合编程之VC界面上显示Matlab窗口 各位大神,VC中如何获取隐藏窗口的句柄,FindWindow()为什么不行呢?还有VC和matlab混个编程中怎么样在VC中找到隐藏了的matlab窗口句柄?求赐教 解决方案 Matlab VC C++ 混合编程MATLAB与VC混合编程VC与Matlab混合编程

VC++界面一揽子解决方案(第三版)介绍

引言 "酒香不怕巷子深"并不是在任何情况下都适用!至少在这个时代! 同样,一个只具功能而不具人性化界面的软件不足为用!别具一格的程序外观足以影响用户的选择.拥有友好而富于个性的用户界面的软件,又往往具有更强的功能.漂亮的界面有利而无弊! 一些和作者一样,作为从事VC++底层开发的中国软件事业的开拓者,默默地辛勤耕耘在自己的一片土地上.VC++是个博大精深的知识库,而我们实在没有足够的精力去驾驭它!在此,作者将许多界面开发技术加以整理.分类.集成,并呈献出来,希望他能帮您节省宝贵的时间和

VC++界面编程之--使用分层窗口实现界面皮肤

使用分层界面来实现界面皮肤的好处是:可以保证图片边缘处理不失真,且能用于异形窗口上,如一些不规则的窗口,你很难用SetWindowRgn来达到理想效果. 在很多情况下,界面的漂亮与否,取决于PS的制作及创意,而界面编程所需要做的就是将图片完整无缺的展示给用户. 分层窗口的好处就是:用一层窗口来描绘窗口背景,以确保背景图片不会失真,而另一层窗口用来放置控件,除控件之外的区域全是透明的.为什么要这么麻烦呢?因为我们将要用到UpdateLayeredWindow来实现窗口背景描绘,一旦执行这个函数后,

windows下VC界面 DIY系列1----写给想要写界面的C++程序员的话

        很早就想写关于C++ UI开发的一系列博文,博客专栏刚审核通过,就马上开始刷博文,不能辜负自己的一番热血,我并不是写界面的高手,只想通过写博文提高我自己的技术积累,也顺便帮助大家解决界面开发的瓶颈. 能来到这里看我写文章, 第一说明你是windows下开发的程序员! 第二你对漂亮软件界面开发感兴趣! 第三或许你也像我当初一样对C++软件界面开发 无所适从!或许我写的不专业,但是我只想让利用C++编写客户端界面的新手程序员们对C++界面开发没有误区 . 我是从windows开发出身

vc 界面 list控制-我想知道这段代码什么意思

问题描述 我想知道这段代码什么意思 void CMyListCtrl::DrawGradient(CDC *pDC, CRect const *rc, COLORREF clrTop, COLORREF clrBottom) { GRADIENT_RECT gRect = {0,1}; TRIVERTEX vert[2] = { {rc->left,rc->top,(COLOR16)(GetRValue(clrTop)< {rc->right,rc->bottom,(COLO

在类VC的界面实现中加入目录树

前言 本文是在<轻松类VC界面>的基础上写的,初次写文章,表义不清之处,请谅解!如果书归正传,开始--. 程序运行结果如下图:左边.底下有两个可浮动.可变大小的控制窗口 ,在左边一个Tab页中,可以显示系统目录. 一.实现原理 图中两个窗口的实现类是从CControlBar派生出来的,王骏先生将CSizingControlBar类修改了一下并命名为CCoolBar,我所要做的是应用该类.左边窗口中的目录树,是从类CdirTreeCtrl派生出来的,我们只要引用就可以,详见代码. 二.应用示例

VC 常用插件和界面库

VC 常用插件 1.Visual Assist(强烈推荐)[url]http://www.wholetomato.com/[/url] VA从5.0一直到现在的VAX,功能越来越强大,除了以前版本中的自动识别各种关键字,系统函数,成员变量,自动给出输入提示,自动更正大小写错误,自动标示错误等等以外,最新的版本中还在 WorkSpace窗口中加入一个VA View,可以更方便的查找工程中的文件.类和变量. 2.WndTabs(强烈推荐)[url]http://www.wndtabs.com/[/u

VC List Control控件如何删除选中的记录

OnButtonDelete() { POSITION pos = m_list.GetFirstSelectedItemPosition(); int idx = m_list.GetNextSelectedItem(pos); while (idx != -1){ LVITEM lvi; lvi.iItem = idx; lvi.iSubItem = 0; lvi.mask = LVIF_IMAGE; if (m_list.GetItem(&lvi)){ m_imgList.Remove(l

VC++通用GIS功能开发解决方案2.0v介绍

综述 <VC++通用GIS功能开发解决方案>源代码是基于VC++6.0 MFC 类库,在Win2000平台上开 发的.界面部分用到了较低版本的 CJ60Lib 开放源码库,用户可自行替换高版本或其他界面 库,它不作为本方案的商业部分. <VC++通用GIS功能开发解决方案>源代码是迄今为止公开提供的最全面.最完善的开发 GIS产品的一套基础解决方案.它的界面十分友好和具人性化,它传承了"VC++界面一揽 子解决方案"最具经典的界面个性,并融合了该产品自身特有的亮