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

注意:本人使用VC++2010开发环境进行测试。

在使用VC开发对话框程序时不像开发单文档程序和多文档程序那么方便,很多资源都需要自己手动添加。最近在开发一个程序时,想尝试在对话框程序里面添加
工具栏 及其 按钮tooltip,于是便有了这篇文章,希望把经验总结下来以方便自己以后查询以及各位同仁查询!

一、首先建立一个对话框程序

1、添加工具栏资源,并在工具栏资源里添加几个按钮,并将按钮的width 和 height 改为24,也可以根据自己的需要更改尺寸,同时,还要为相应的按钮设置一个ID。具体操作如图:

二、创建工具栏

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尺寸的位图,注意,该尺寸是根据上面按钮的尺寸而设定的。

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

至此,便已并运行程序,可以看到程序界面就有我们添加上句的工具栏按钮图标,如图:

以上已经实现了为工具栏按钮添加图标的功能,那如何为工具栏按钮添加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功能了!

时间: 2024-08-25 14:17:16

VC 对话框程序添加工具栏按钮图标及其按钮tooltip的相关文章

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

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

VC对话框上添加状态栏

VC在对话框上添加状态栏,没有可视化的控件,要用类来创建. 1.在窗口.h文件中添加成员变量 CStatusCtrl  m_status; 2.在窗口的OnInitDialog函数中添加创建代码: RECT     m_Rect;      GetClientRect(&m_Rect);         //获取对话框的矩形区域   m_Rect.top = m_Rect.bottom-20;    //设置状态栏的矩形区域   m_Status.Create(WS_CHILD|WS_VISIB

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

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

VC++对话框中添加状态栏的方法

方法一:1.添加成员变量CStatusBarCtrl m_StatusBar;2.在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, strPartDi

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.LoadBitma

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

【mfc】对于对话框程序的优化与为程序创建图表

本文是继上一篇<[mfc]Helloworld>(点击打开链接)所写出来的对话框进行了的优化, 这次要把这个对话框程序做得更加好. 一.基本目标 1.为这个对话框程序加上自己的图标,如下图: 2.不再是仅有一个让用户点击的对话框了,而且在用户点击确定与取消按钮之后能够进行判断 比如,用户点击了确定,则弹出用户点击了确定的提示 如果用户点击了取消,则弹出用户点击取消的提示 二.制作过程 1.首先像<[mfc]Helloworld>(点击打开链接)中,先新建一个简单的Win32工程,然

VC,VB程序按钮、图标样式美化

此处的"美化"指的不是通过代码进行美化你的程序.关于想进一步优化自己的程序界面的,不妨去了解下SkinSharp吧.本文提及的是利用第三方资源编辑软件在不更改程序任何框架和代码的前提下实现对界面的简单美化. 1.Windows2000按钮样式转为Windows XP按钮样式 两种按钮的差别比较容易区分,典型的就是VC6和VS2010开发出的MFC程序界面.前者的按钮是黑白的,后者有渲染效果 VC6样式: VS2010样式 细心的读者应该发现我这两个界面的icon是相同的.没错,我是用V

VC++MFC对话框程序中给对话添加背景图片

VC对话框怎么显示背景图片呢.在MFC中实现背景图片,不像C#应用程序那么简单.今天就和朋友们说说如何在VC界面中设置背景图片 ^_^ 工具/原料 Visual C++ 2010 方法一:用Picture控件 1 新建MFC应用程序 2 在应用程序中,选择基于对话框,其他保持默认即可 3 右击项目,选择添加-资源 4 在添加资源对话框中,点击导入,选择要作为背景的图片 jpg格式的图片可以用画图打开另存为bmp格式 (网上说可以直接jpg格式,自行实验未成功) 下方对话框中资源类型选为bitma