VC++ 对话框下使用工具栏

 关于这一技术网上也有很多的记录,下面仅记录我测试OK的代码。

    在CXXDlg.h中添加如下成员变量:

  CToolBar m_ToolBar;

  CBitmap m_bmpTool;

  在CXXDlg.cpp的OnInitDialog中添加如下代码:

 1      UINT nIDs[] =
 2      {
 3          IDC_OPEN,
 4          IDC_CLOSE,
 5          IDC_FIND,
 6          IDC_COPY,
 7      };
 8
 9      m_ToolBar.Create(this);
10      m_bmpTool.LoadBitmapW(IDB_BITMAP2);
11      m_ToolBar.SetBitmap(m_bmpTool);
12      m_ToolBar.SetButtons(nIDs,4);
13      m_ToolBar.SetButtonText(0,_T("打开"));
14      m_ToolBar.SetButtonText(1,_T("关闭"));
15      m_ToolBar.SetButtonText(3,_T("复制"));
16      m_ToolBar.SetButtonText(2,_T("查找"));
17      m_ToolBar.SetSizes(CSize(55,55),CSize(32,32));
18
19      CRect rcClientStart;
20      CRect rcClientNow;
21      GetClientRect(rcClientStart);
22      RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0, reposQuery, rcClientNow);
23
24      CPoint ptOffset(rcClientNow.left - rcClientStart.left,
25      (rcClientNow.top - rcClientStart.top));
26
27      CRect  rcChild;
28      CWnd* pwndChild = GetWindow(GW_CHILD);
29      while (pwndChild)
30      {
31          pwndChild->GetWindowRect(rcChild);
32          ScreenToClient(rcChild);
33          rcChild.OffsetRect(ptOffset);
34          pwndChild->MoveWindow(rcChild, FALSE);
35          pwndChild = pwndChild->GetNextWindow();
36      }
37
38      CRect rcWindow;
39      GetWindowRect(rcWindow);
40      rcWindow.right += rcClientStart.Width() - rcClientNow.Width();
41      rcWindow.bottom += (rcClientStart.Height() - rcClientNow.Height());
42      MoveWindow(rcWindow, FALSE);
43
44      RepositionBars(AFX_IDW_CONTROLBAR_FIRST,
45      AFX_IDW_CONTROLBAR_LAST, 0, reposExtra);
46      CenterWindow();

按钮的消息效应操作如下:

  消息映射如下:

  ON_COMMAND(IDC_OPEN,&CXXDlg::OnBtnOpen)
  ON_COMMAND(IDC_CLOSE,&CXXDlg::OnBtnClose)
  ON_COMMAND(IDC_FIND,&CXXDlg::OnBtnFind)
  ON_COMMAND(IDC_COPY,&CXXDlg::OnBtnCopy)

 当然这几个消息映射函数定义为了CXXDlg的成员函数,如下: 

 afx_msg void OnBtnOpen();
   afx_msg void OnBtnClose();
   afx_msg void OnBtnFind();
   afx_msg void OnBtnCopy();

 再去实现这些成员函数既可。

时间: 2024-10-28 04:24:29

VC++ 对话框下使用工具栏的相关文章

VC 对话框程序加入工具栏button图标及其buttontooltip

注意:本人使用VC++2010开发环境进行測试. 在使用VC开发对话框程序时不像开发单文档程序和多文档程序那么方便,非常多资源都须要自己手动加入.近期在开发一个程序时.想尝试在对话框程序里面加入 工具栏 及其 buttontooltip,于是便有了这篇文章,希望把经验总结下来以方便自己以后查询以及各位同仁查询! 一.首先建立一个对话框程序 1.加入工具栏资源,并在工具栏资源里加入几个button,并将button的width 和 height 改为24,也能够依据自己的须要更改尺寸.同一时候,还

VC 对话框程序添加工具栏按钮图标及其按钮tooltip

注意:本人使用VC++2010开发环境进行测试. 在使用VC开发对话框程序时不像开发单文档程序和多文档程序那么方便,很多资源都需要自己手动添加.最近在开发一个程序时,想尝试在对话框程序里面添加 工具栏 及其 按钮tooltip,于是便有了这篇文章,希望把经验总结下来以方便自己以后查询以及各位同仁查询! 一.首先建立一个对话框程序 1.添加工具栏资源,并在工具栏资源里添加几个按钮,并将按钮的width 和 height 改为24,也可以根据自己的需要更改尺寸,同时,还要为相应的按钮设置一个ID.具

VC对话框添加工具栏

在VC对话框中添加工具栏,要分为如下几步操作. 1.在资源视图中添加toolbar类资源,在工具栏上添加按钮,并命名ID:ID_BTN1,ID_BTN2 2.对话框头文件中,添加变量CToolBar  m_ToolBar; 3.在对话框的OnInitDialogh函数中添加如下代码: // TODO: 在此添加额外的初始化代码       if( !m_ToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE |          CB

VC++环境下多文档模板应用程序开发(带源码)

我们以前见到的关于VC++环境下利用APP Wizard 自动生成的MDI的应用程序只支持打开同一文档类型的多个文件,但是不能够同时打开不同种类型的文档.网上的这种公开资料比较少,我在知网上查阅了相关的资料.下面我根据这些资料做一下总结(辛辛苦苦一个一个字码出来的). 下面设计一个能够处理两种文档类型的应用程序:第一种文档类型:TXT文档,第二种文档类型:Bub的文档类型. 第一种的文档类型TXT,是利用APP Wizard自动生成的,只不过是在设置的时候将文档类型设置为TXT类型,并且使生成的

【应用笔记】【AN003】VC++环境下基于以太网的4-20mA电流采集

简介 4-20mA电流环具有广泛的应用前景,在许多行业中都发挥着重要作用.本文主要介绍了以太网接口的4-20mA电流采集模块在VC++环境下进行温度采集,实现WINDOWS平台对数据的采集.分析及显示. 系统组成及工作原理 系统组成主要包括PT100铂电阻.SBWZ温度变送器.4-20mA电流采集模块(GM4008)以及上位机软件组成,如图1所示. PT100铂电阻温度传感器:利用铂金属阻值随温度的变化而变化的特性制成的一种温度传感器,主要用来测量温度的变化量. SBWZ温度变送器:一种现场安装

VC对话框的菜单添加快捷键

要在VC对话框上,为菜单添加快捷键,步骤如下: 1.先创建快捷键资源表IDR_ACCELERATOR1,在表中将快捷键与菜单ID绑定 2.在对话框的.h文件中,声明快捷键资源句柄  HACCEL m_Haccel; 3.在OnInitDialog函数中添加代码: //加载快捷键资源表   m_Haccel = LoadAccelerators(theApp.m_hInstance,(LPCTSTR)IDR_ACCELERATOR1); 4.添加快捷键消息处理虚函数,如下: BOOL CTestD

VC环境下编译OpenSSL(仅仅是个示例,网上还有许多相关文章)

VC环境OpenSSL安装以及编程过程 SSL就是Secure Sockets Layer,是一种安全套接字协议,详情请参考链接中的介绍. 配置过程中需要生成一些mak文件,这些生成代码用perl脚本生成,所以要安装一个ActivePerl ActivePerl:http://www.activestate.com/activeperl/ openss:http://www.openssl.org/ (本文使用openssl-1.0.0-beta5) 参考 openssl 目录下的 instal

VC 对话框背景颜色、控件颜色(三种方法)

系统环境:Windows 7软件环境:Visual C++ 2008 SP1本次目的:为对话框设置背景颜色.控件颜色 既然MFC对话框不好开发,那么现在我们来开始美化我们的对话框.为对话框设置背景颜色.控件颜色等等. 对话框背景颜色: 网上流传有四种方法(可能还不止),在VC++2008SP1测试后,发现只有三种可以使用了,其中第一种被废弃了.以下是四种方法: 方法一 (失效):调用CWinApp类的成员函数SetDialogBkColor来实现.       其中函数的第一个参数指定了背景颜色

VC++ 对话框程序响应键盘消息的处理方法的说明(非常重要)

基于MFC对话框的应用程序在响应按键消息和热键方面都力不从心,CDialog类的消息循环中去掉了TranslateAccelerator函数,因此不能响应热键:同时由于对话框上可能有很多控件,且默认情况下这些子窗口已经截获了焦点,因此键盘消息已经被控件捕获了:同时为了实现控件焦点切换和对话框默认行为,  VK_TAB.VK_LEFT.VK_RIGHT.VK_UP.VK_DOWN. VK_RETURN.VK_ESCAPE 等键已经被截获处理,因此对话框没有控件时仍然不能完全响应按键消息. 关于热键