demo工程

http://pan.baidu.com/s/1mh83aru

VB6附带的graphics文件夹资源

http://pan.baidu.com/s/1sl5RmI5

一 在对话框添加工具栏

如上图;插入工具栏资源,并编辑;

对话框头文件中加入;

CToolBar m_ToolBar;

OnInitDialog()函数中添加

if(!m_ToolBar.CreateEx( this,TBSTYLE_FLAT , WS_CHILD | WS_VISIBLE |CBRS_ALIGN_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS,CRect(4,4,0,0))||!m_ToolBar.LoadToolBar(IDR_TOOLBAR1) ){TRACE0("failedto create toolbar\n");return FALSE;}m_ToolBar.ShowWindow(SW_SHOW);RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST, 0);

效果:

二 通过图像列表自定义工具栏

如上图,通过VC资源窗口insert所需的ico文件,并分别命名;

对话框头文件中加入

CToolBar m_ToolBar;
CImageList m_ImageList;

OnInitDialog()函数中添加如下代码,将图像列表与工具栏关联并进行显示

m_ImageList.Create(32,32,ILC_COLOR24|ILC_MASK,1,1);//向图像列表中添加图标m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICONUSER));m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICONSET));m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICONQUERY));m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICONRECORD));m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICONIMPORT));m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICONEXPORT));UINT array[8];for(int i=0;i<8;i++)        //初始化工具栏ID{if(i==2|| i==5)array[i]= ID_SEPARATOR; //第3、6个按钮为分隔条elsearray[i]= i+1001;}m_ToolBar.Create(this);m_ToolBar.SetButtons(array,8);//关联图像列表m_ToolBar.GetToolBarCtrl().SetImageList(&m_ImageList);m_ToolBar.SetSizes(CSize(50,60),CSize(32,32));//设置按钮和图标的大小
/*The sizeImage parameter must contain thesize, in pixels, of the images in the toolbar's bitmap.
The dimensions in sizeButton must besufficient to hold the image plus 7 pixels extra in width and 6 pixels extra inheight.
This function also sets the toolbar heightto fit the buttons.*///设置工具栏按钮的显示文本m_ToolBar.SetButtonText(0,"  用户  ");m_ToolBar.SetButtonText(1,"  设置  ");m_ToolBar.SetButtonText(3,"  查询  ");m_ToolBar.SetButtonText(4,"  记录  ");m_ToolBar.SetButtonText(6,"  导入  ");m_ToolBar.SetButtonText(7,"  导出  ");RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);

效果:

三 导入图片生成工具栏,并将工具栏与菜单栏对应项绑定

如上图;通过VC资源窗口insert所需的ico文件,并分别命名,然后insert一个菜单资源,并进行编辑;

头文件中添加

CMenu m_Menu;
    CToolBar m_ToolBar;
    CImageList m_ImageList;

OnInitDialog()函数中添加如下代码,将图像列表与工具栏关联,并将工具栏和对应菜单项ID进行关联,从而与菜单项共用处理函数

m_Menu.LoadMenu(IDR_MENU1);SetMenu(&m_Menu);TBBUTTON tbButton[5] = {0};m_ImageList.Create(32,32, ILC_COLOR32 | ILC_MASK, 0, 0);m_ImageList.Add(::AfxGetApp()->LoadIcon(IDI_ICON3));m_ImageList.Add(::AfxGetApp()->LoadIcon(IDI_ICON1));m_ImageList.Add(::AfxGetApp()->LoadIcon(IDI_ICON4));m_ImageList.Add(::AfxGetApp()->LoadIcon(IDI_ICON5));m_ImageList.Add(::AfxGetApp()->LoadIcon(IDI_ICON2));//m_ToolBar.Create(WS_CHILD| WS_VISIBLE, CRect(0, 0, 0, 0), this, 0);//m_ToolBar.Create(this,WS_CHILD| WS_VISIBLE,0);m_ToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_SIZE_DYNAMIC | CBRS_BORDER_TOP );m_ToolBar.GetToolBarCtrl().SetImageList(&m_ImageList);for(int i=0; i< 5; i++){tbButton[i].dwData        = NULL;tbButton[i].fsState         = TBSTATE_ENABLED;tbButton[i].fsStyle         = (BYTE)TBSTYLE_FLAT;tbButton[i].iBitmap        = i;}tbButton[0].idCommand= ID_ATTENDANCE_RECORD;tbButton[1].idCommand= IDM_REQUEST_EMPLOYEE;tbButton[2].idCommand= IDM_PAYLIP;tbButton[3].idCommand= IDM_PORTFOLIO;tbButton[4].idCommand= ID_ABOUT;m_ToolBar.GetToolBarCtrl().AddButtons(5,tbButton);m_ToolBar.GetToolBarCtrl().AutoSize();m_ToolBar.GetToolBarCtrl().SetStyle(TBSTYLE_FLAT| CCS_TOP);

效果:

若要把工具栏的按钮和菜单项相关联,也可将它们的ID设置为同一个ID来实现

四 添加状态栏方法一

添加成员变量
CStatusBarCtrl m_StatusBar;
OnInitDialog()中加入
m_StatusBar.Create(WS_CHILD|WS_VISIBLE|SBT_OWNERDRAW,CRect(0,0,0,0), this, 0);int strPartDim[3]= {100, 200, -1}; //分割数量m_StatusBar.SetParts(3,strPartDim);//设置状态栏文本m_StatusBar.SetText("分栏一", 0, 0);m_StatusBar.SetText("分栏二", 1, 0);m_StatusBar.SetText("分栏三", 2, 0);//下面是在状态栏中加入图标m_StatusBar.SetIcon(1,SetIcon(AfxGetApp()->LoadIcon(IDR_MAINFRAME),FALSE));//为第二个分栏中加的图标

效果:

五 添加状态栏方法二

添加成员变量
CStatusBar m_wndStatusBar;
在OnInitDialog()中加入
static UINT indicators[] ={ID_SEPARATOR,                            //status line indicatorID_INDICATOR_CAPS,             //CAP lock indicator.ID_INDICATOR_NUM,              //NUM lock indicator.ID_INDICATOR_SCRL,             //SCRL lock indicator.};if(!m_wndStatusBar.Create(this)||!m_wndStatusBar.SetIndicators(indicators,sizeof(indicators)/sizeof(UINT))){TRACE0("Failed to create statusbarn");return -1;         // fail to create}UINT nID;        //控制状态栏里面的分栏m_wndStatusBar.SetPaneInfo(0,nID,SBPS_STRETCH|SBPS_NOBORDERS,100);              //返回值存nID中m_wndStatusBar.SetPaneText(0,"就绪");m_wndStatusBar.SetPaneInfo(1,nID,SBPS_NORMAL,100);m_wndStatusBar.SetPaneText(1,"大写");m_wndStatusBar.SetPaneInfo(2,nID,SBPS_POPOUT,100);m_wndStatusBar.SetPaneText(2,"数字");
//               SetPaneInfo()函数的第三个参数的可选项如下:
//               The following indicator styles are supported:
//                           SBPS_NOBORDERS               No 3-D border around the pane.
//                           SBPS_POPOUT                        Reverse border so that text "pops out."
//                           SBPS_DISABLED                     Do not draw text.
//                           SBPS_STRETCH                      Stretch pane to fill unused space. Only one pane per status bar can have thisstyle.
//                           SBPS_NORMAL                        No stretch, borders, or pop-out.
//----------------让这个状态栏最终显示在对话框中-------------RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);

效果:

所用图标是VB6附带的graphics文件夹下的内容;见前面下载链接;

图解VC++工具栏和状态栏编程实例相关推荐

  1. VC++ 串行化编程实例

    Win10 + VC6: 首先新建一个单文档工程,名为ardemo1: 增加写文件.读文件菜单:菜单ID自动生成:自己改也可以: 在 写文件 菜单,右击,选择 建立类向导: 在类向导中,类名选中Vie ...

  2. 图解DIV相关编程实例

    下面图解web 前端DIV相关编程实例: 为清晰,把body背景色设置为MediumSeaGreen: 左边代码:右边效果: 一 边框相关 实线,1像素宽,红色的边框: 3像素宽: 虚线框: 黑色,5 ...

  3. VC操作XML编程实例

    XML编程实例 文章正文 前段时间,由于工作的需要,利用到了XML,所以对其进行了一些简单的研究.在此愿把一些心得写出来,与各位分享,不对的地方还望多多包涵. 1.什么是 XML? 首先,我想各位应该 ...

  4. C++实例(九)工具栏和状态栏

    工具栏和状态栏 一.工具栏创建 带图表的工具栏 默认情况下,MFC中提供的工具栏只能显示简单的图像. 带背景的工具栏 带背景的工具栏可以为程序界面增添活力,使用户更愿意使用. 二.工具栏控制 三.增强 ...

  5. c语言vc6.0界面设计实例,vc6.0使用简介及C语言在6.0平台上的编程实例.ppt

    vc6.0使用简介及C语言在6.0平台上的编程实例 C++ 目录 第一章:Visual C++概述 第二章:C++语言基础 第三章:用MFC编写Windows程序 第四章:消息与输入 第五章:菜单.工 ...

  6. vc与matlab联合,浅析VC与Matlab联合编程(二) - VC知识库文章

    浅析VC与Matlab联合编程(二) 作者:邓科 下载源代码 在"浅析VC与Matlab联合编程 (一)"中简单介绍了VC与matcom的接口编程,实现了VC调用matcom的一个 ...

  7. VC++下命名管道编程的原理及实现

    概述 管道(Pipe)实际是用于进程间通信的一段共享内存,创建管道的进程称为管道服务器,连接到一个管道的进程为管道客户机.命名管道(Named Pipes)是在管道服务器和一台或多台管道客户机之间进行 ...

  8. python没有上方工具栏_PyQt5快速上手基础篇8-菜单栏、工具栏和状态栏

    前言 本节我们学习使用Qt Designer设计菜单栏.工具栏和状态栏,并完成一个串口工具的界面设计,在接下来教程中,我们将逐步实现一个串口调试助手,并详细介绍相关的其他知识点. 一.基础知识 1.菜 ...

  9. matlab的矩阵编译器,MATLAB引擎方式实现VC与MATLAB混合编程

    VS2008是当前主流的应用程序开发环境之一,开发环境强大,开发的程序执行速度快.但在科学计算方面函数库显得不够丰富.读取.显示数据图形不方便.Matlab是一款将数值分析.矩阵计算.信号处理和图形显 ...

最新文章

  1. 每个网站SEO优化人员都要熟知的三大图片优化技巧
  2. 快学Java NIO
  3. java语言避免了大多数的什么_Java 语言避免了大多数的▁错误。( )_学小易找答案...
  4. 如何adb shell进入ctia模式
  5. 第8.15节 Python重写自定义类的__repr__方法
  6. ubuntu15.10下安装opencv2.4.9python上调用opencv库
  7. rasa算法_(十八)基于RASA开始中文机器人实现机制
  8. linux tomcal 看日志,cal命令 – 显示日历
  9. 【甘道夫】HBase基本数据操作的详细说明【完整版,精绝】
  10. 80后的我们为什么不结婚?
  11. Android的banner(轮播图)的实现
  12. 直播视频网站源码,登录界面LoginActivity
  13. matlab元胞数组
  14. fine-grained prosody control专栏
  15. 使用阿尔卑斯山法进行高效时间管理
  16. Windows电脑添加打印机
  17. 金笛邮件服务器解析中小企业对自建邮件系统的误区
  18. 【GIS】arcpy对栅格的常见操作——拼接裁剪代数计算
  19. RLS递归最小二乘法(Recursive Least Squares)
  20. 找出n以内最大的质数。python

热门文章

  1. 学习:二维码、QR码、J4L-QRCode、java
  2. Windows 技术篇 - 如何查看cpu支持的指令集、型号、属性等详细信息,使用cpu-z工具查看处理器、内存、显卡、主板、缓存、SPD信息方法
  3. python pandas爬取网页成绩表格,计算各个类别学分
  4. 嵌入式 Jlink中flash.csv和*.jflash文件分析
  5. SDUT_1299 最长上升子序列
  6. 2.5 matlab稀疏矩阵
  7. MATLAB 图像的傅里叶变换
  8. Java输入输出(标准)
  9. 多线程生成随机数组+多线程快速排序(C++实现)
  10. python得到一个excel的全部sheet标签值