VC 对话框程序加入工具栏button图标及其buttontooltip
注意:本人使用VC++2010开发环境进行測试。
在使用VC开发对话框程序时不像开发单文档程序和多文档程序那么方便,非常多资源都须要自己手动加入。近期在开发一个程序时。想尝试在对话框程序里面加入
工具栏 及其 buttontooltip,于是便有了这篇文章,希望把经验总结下来以方便自己以后查询以及各位同仁查询!
一、首先建立一个对话框程序
1、加入工具栏资源,并在工具栏资源里加入几个button,并将button的width 和 height 改为24,也能够依据自己的须要更改尺寸。同一时候,还要为对应的button设置一个ID。
详细操作如图:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGJtb3hpYQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
二、创建工具栏
1、在***Dlg.h加入工具栏对象, 以及位图资源
private:
CToolBar m_ToolBar;
// 位图资源
CBitmap m_bitmap1;
CBitmap m_bitmap2;
CBitmap m_bitmap3;
CImageList m_ImageList;
2、在OnInitDialog()函数里面加入下面代码,创建工具栏
if( !m_ToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS ) ||
!m_ToolBar.LoadToolBar(IDR_TOOLBAR1))
{
TRACE0("未能创建工具栏\n");
AfxMessageBox(_T("未能创建工具栏\n"));
return FALSE; // 未能创建
}
m_ToolBar.ShowWindow(SW_SHOW);
//控件条定位
RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);
3、加载几个24*24尺寸的位图,注意。该尺寸是依据上面button的尺寸而设定的。
4、在以上 第2 步后面的代码添载入入位图的代码。终于如图
if( !m_ToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS ) ||
!m_ToolBar.LoadToolBar(IDR_TOOLBAR1))
{
TRACE0("未能创建工具栏\n");
AfxMessageBox(_T("未能创建工具栏\n"));
return FALSE; // 未能创建
}
m_ToolBar.ShowWindow(SW_SHOW);
//控件条定位
RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0); m_bitmap1.LoadBitmapW(IDB_BITMAP_MULTIMETER);
m_bitmap2.LoadBitmapW(IDB_BITMAP_PHONE);
m_bitmap3.LoadBitmapW(IDB_BITMAP_SPEAKER);
m_ImageList.Create(24,24, ILC_COLOR32 | ILC_MASK,0,0);
m_ImageList.Add(&m_bitmap1, RGB(0, 0, 0));
m_ImageList.Add(&m_bitmap2,RGB(0, 0, 0));
m_ImageList.Add(&m_bitmap3,RGB(255, 255, 255));
m_ToolBar.GetToolBarCtrl().SetImageList(&m_ImageList);
至此。便已并执行程序。能够看到程序界面就有我们加入上句的工具栏button图标,如图:
以上已经实现了为工具栏button加入图标的功能。那怎样为工具栏button加入tooltip功能能。例如以下图的效果:
接着就由本人继续介绍操作步骤:
1、在***Dlg.h 头文件加入 消息处理函数声明:
afx_msg BOOL OnToolTipText(UINT, NMHDR* pNMHDR, LRESULT* pResult); // 工具条提示
2、在***Dlg.cpp加入消息映射
BEGIN_MESSAGE_MAP(CSageRemoteKeyTestDlg, CDialogEx)
......
ON_NOTIFY_EX_RANGE(TTN_NEEDTEXT, 0, 0xffff, OnToolTipText)
END_MESSAGE_MAP()
3、加入函数定义
BOOL ***Dlg::OnToolTipText(UINT, NMHDR* pNMHDR, LRESULT* pResult)
{ TOOLTIPTEXT *pTTT=(TOOLTIPTEXT*)pNMHDR;
UINT uID=pNMHDR->idFrom; // 相当于原WM_COMMAND传递方式的wParam(low-order), 在wParam中放的则是控件的ID。 if(pTTT->uFlags & TTF_IDISHWND)
uID=::GetDlgCtrlID((HWND)uID);
if(uID==NULL)
return FALSE;
switch(uID)
{
case IDOK:
pTTT->lpszText= _T("按下此键開始測试");
break; case IDM_POWER_MULTIMETER:
pTTT->lpszText= _T("电表配置");
break; case IDM_SHIELDINGBOX_COM:
pTTT->lpszText= _T("串口配置");
break; case IDM_BEEP:
pTTT->lpszText= _T("蜂鸣器配置");
break;
} return TRUE;
}
至此,编译执行程序就能实现上图的tooltip功能了!
VC 对话框程序加入工具栏button图标及其buttontooltip的更多相关文章
- VC++ 对话框程序响应键盘消息的处理方法的说明(非常重要)
基于MFC对话框的应用程序在响应按键消息和热键方面都力不从心,CDialog类的消息循环中去掉了TranslateAccelerator函数,因此不能响应热键:同时由于对话框上可能有很多控件,且默认情 ...
- vc对话框程序运行时隐藏
1.在资源编辑中设置对话框为不可见 2.在OnPaint中加入下面代码 void CMyDlg::OnPaint() { static b = false; if(!b){ ShowWindow(SW ...
- VC++ 对话框下使用工具栏
关于这一技术网上也有很多的记录,下面仅记录我测试OK的代码. 在CXXDlg.h中添加如下成员变量: CToolBar m_ToolBar; CBitmap m_bmpTool; 在CXXDlg ...
- VC++MFC对话框程序中给对话添加背景图片
VC对话框怎么显示背景图片呢.在MFC中实现背景图片,不像C#应用程序那么简单.今天就和朋友们说说如何在VC界面中设置背景图片 ^_^ 工具/原料 Visual C++ 2010 方法一:用Pic ...
- VS2010 MFC对话框程序用CButtonST给按钮添加图标
也许是VS版本的关系,CButtonST中的BCMenu两个文件是无法编译通过的. 1.拷贝下载的CButtonST(我下载的v3.9)中的BtnST.h和BtnST.cpp文件到自己项目目录下. ...
- 非对话框程序创建组合框Groupbox
对话框程序中的控件,例如button.groupbox之类,是直接放上去的.当然,除groupbox以外,在MFC中其他控件都有相对应的类,以支持程序员在非对话框程序中动态创建控件.而唯独好像没有gr ...
- Win32对话框程序(1)
之前学C语言是一直都是在控制台下面操作的,面对的都是黑框框,严重的打击了学习的兴趣.后来在TC下进行C语言课程设计,做了图形界面编程,但都是点线面画的…… 中间隔了好长一段时间没有碰过C语言,最近才开 ...
- VC对话框使用OnEraseBkgnd函数位图背景并透明
1.使用OnEraseBkgnd函数实现对话框位图背景 BOOL CDisplayBmpBackGroundDlg::OnEraseBkgnd(CDC *pDC) { CRect rect; GetC ...
- 【MFC - 菜单】在对话框程序中添加菜单栏(CMenu)(转)
原文转自 http://lishiqiang1988.blog.163.com/blog/static/41147912201382104631547/ VS2010的MFC对话框程序中添加菜单栏的过 ...
随机推荐
- Super超级ERP系统---(1)总体设计
1.概述 随着互联网的发展,尤其是电子商务的发展,信息化系统越来显得越重要.在互联网飞速发展的今天,各种网站,软件系统应用而生,特别是随着近几年电子商务的发展,很多企业慢慢开始做大,管理方面暴露 ...
- 关于用户禁用Cookie的解决办法和Session的图片验证码应用
当用户通过客户端浏览页面初始化了Session之后(如:添加购物车,用户登陆等),服务器会将这些session数据保存在:Windows保存在C:\WINDOWS\Temp的目录下,Linux则是保存 ...
- P1982 小朋友的数字
题目描述 有 n 个小朋友排成一列.每个小朋友手上都有一个数字,这个数字可正可负.规定每个 小朋友的特征值等于排在他前面(包括他本人)的小朋友中连续若干个(最少有一个)小朋 友手上的数字之和的最大值. ...
- css处理图片下方留白问题
引用图片的时候,图片和下方内容会有一点小空白,大概如下图紫色横条: 不是说有margin还是padding,是因为ing是行级元素,浏览器就会默认留白了,这时候处理方法很简单,给img加上样式disp ...
- [原创]C++带空格字符串的输入问题
字符串一直是一个重点加难点,很多笔试面试都会涉及,带空格的字符串更是十分常见,现在对字符串的输入问题进行一下总结. C++用cin输入的时候会忽略空格以后的字符,比如 char a[100]; cin ...
- 深入理解DIP、IoC、DI以及IoC容器(转载)
<转载的这个up的其他的文章也很nice> 这几个词第一眼看,懵逼,第二眼看,更特么懵逼..... 面向对象设计(OOD)有助于我们开发出高性能.易扩展以及易复用的程序. 其中,OOD有一 ...
- Struts2学习笔记 - Part.01
1.关于Struts2中的struts.xml文件中action设置 <!-- 它是一个通用action,此处的*表明它可以处理任意的请求--> <action name=" ...
- 三维重建:深度相机方案对比-KinectFusion的基本原理(尺度)
算法原理请参考此文: kinect fusion 3D重建基本算法 http://log.csdn.net/xiaohu50/article/details/51592503 三维重建为三维空间实 ...
- SVD分解.潜语义分析.PythonCode
原文链接:http://www.cnblogs.com/appler/archive/2012/02/02/2335886.html 原始英文链接:http://www.puffinwarellc.c ...
- 关于 Windows 10 如何扩展分区与合并分区
前言 相信大部分人都遇见磁盘不够用的问题吧,然后都在后悔当初为什么就给 x 盘分了 10G 的容量吧. 不过没关系,自从 Windows 7 开始( xp 我也不知道有毛有),Windows 自带的磁 ...