VS2008给图标工具栏-状态栏添加响应函数
BOOL CGSM_MessageDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
// 执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标
// TODO: 在此添加额外的初始化代码
//创建图像列表
m_ImageList.Create(32,32,ILC_COLOR24|ILC_MASK,1,1);
//向图像列表中添加图标
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICONBOOK));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICONNOTE));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICONSEND));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICONRECV));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICONSET));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICONUSER));
UINT array[8];
for(int i=0;i<8;i++)
{
if(i==2 || i==5)
array[i] = ID_SEPARATOR; //第、个按钮为分隔条
else
array[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)); //设置按钮和图标的大小
m_ToolBar.SetButtonText(0,L"电话簿管理");
m_ToolBar.SetButtonText(1,L"常用语管理");
m_ToolBar.SetButtonText(3,L"短信息发送");
m_ToolBar.SetButtonText(4,L"短信息接收");
m_ToolBar.SetButtonText(6,L"短信猫设置");
m_ToolBar.SetButtonText(7,L"操作员管理");
RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);
return TRUE; // 除非将焦点设置到控件,否则返回TRUE
}
2、从代码中的“array[i] = i+1001; //为工具栏按钮设置索引”可以看出,工具栏图标的地址是1001开始的。因此,工具栏的图标分别为1001 1002 1003 1004等等。
3、现在为图标工具栏添加响应函数:
在对话框头文件的.h中添加红色代码:如下
// 实现
protected:
HICON m_hIcon;
// 生成的消息映射函数
virtual BOOL OnInitDialog();
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
afx_msg void OnPhoneBook();
4、在对话框的Dlg.cpp中添加如下代码:
BEGIN_MESSAGE_MAP(CGSM_MessageDlg, CDialog)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_COMMAND(1001,OnPhoneBook)//1001时候第一个按钮的ID值,如果要为第二个图标按钮添加函数这改为:ON_COMMAND(1002,OnPhoneBook)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
5、在对话框的Dlg.cpp中添加响应函数:
void CGSM_MessageDlg::OnPhoneBook()
{
CPhoneBookDlg dlg;
dlg.DoModal();//用于链接一个对话框
}
对话框上的工具条上的提示信息不能采用mfc应用程序直接在资源中添加的方式添加,因为对话框不由CFrameWnd管理。
1. 在对话框类头文件.h中添加
BOOL OnToolTipNotify( UINT id,NMHDR* pNMHDR,LRESULT* pResult);
2. 在对话框.cpp文件中添加
(1)消息映射中添加:
BEGIN_MESSAGE_MAP(CAssessMainDialog, CBCGPDialog)
//控件响应,范围为0到无穷大
ON_NOTIFY_EX( TTN_NEEDTEXT,0,OnToolTipNotify)
//控件响应,范围为0到OxFFFF
//ON_NOTIFY_EX_RANGE( TIN_NEEDTEXT,0,OxFFFF,OnToolTipNotify)
END_MESSAGE_MAP()
(2)添加响应函数:
BOOL CAssessMainDialog::OnToolTipNotify( UINT id,NMHDR* pNMHDR,LRESULT* pResult )
{
BOOL bResult = TRUE;
TOOLTIPTEXT *pTTT = (TOOLTIPTEXT*)pNMHDR;
UINT_PTR uID = pNMHDR->idFrom;
if ( pTTT->uFlags && TTF_IDISHWND)
{
//int nID = ::GetDlgCtrlID(HWND(uID);)网上例子说uID为控件在窗口中的句柄,测试结果其实就是控件的ID,因此这句不需要,
//也可能是编译器的原因。。。。。。
CString strToolTips(_TEXT(""));
switch ( uID )
{
case ID_EXECUTE:
strToolTips.Format(_TEXT("%s"),_TEXT("执行评估流程"));
break;
case ID_SAVEFILE:
strToolTips.Format(_TEXT("%s"),_TEXT("保存评估流程"));
break;
case ID_OPENFILE:
strToolTips.Format(_TEXT("%s"),_TEXT("打开评估流程"));
break;
default:
bResult = FALSE;
}
if ( TRUE == bResult)
{
*pResult = 0;
_tcscpy( pTTT->lpszText,strToolTips);
pTTT->hinst = NULL;
}
}
return bResult;
}
(3)启用工具提示
在初始化函数中添加,不一定在OnInitDialog函数中。
BOOL CAssessMainDialog::OnInitDialog()
{
CBCGPDialog::OnInitDialog();
CBCGPDialog::EnableVisualManagerStyle();
m_ToolBar->EnableToolTips(TRUE);
//网上的例子是直接启用对话框工具提示,测试结果只能对整个工具栏显示提示信息,改为启用工具栏提示信息,ok了
//EnableToolTips(TRUE);
return TRUE;
}
}
VS2008给图标工具栏-状态栏添加响应函数的更多相关文章
- [vs2008]Visual Studio 2008 SP1添加或删除功能提示查找SQLSysClrTypes.msi文件
前言 今天接到领导布置的一个任务,是之前同事负责的项目.离职了,现在客户有些地方需要修改,由于我之前参与过,就落在我的头上了. 然后我就把代码弄了过来,打开发现其中需要用到水晶报表.(我觉得不好用,不 ...
- MFC 学习 之 工具栏的添加(一)
最终实现的效果图: 步骤一:接下来在资源视图中添加一个ToolBar工具栏(具体怎么添加在这儿就不详细讲解了!)添加后的ToolBar以及工具栏中每个按钮 所命名的ID如下:(可以自定义,只要不重名就 ...
- MFC实现多风格真彩色大图标工具栏按钮
研究zlib库,想实现一个类似winrar功能的小东东,打开winrar界面看它的工具栏比较好看于是动手想做一个,当然资源也使用的是winrar附带的.下面是截图:真彩色(32位)32*32大图标工具 ...
- CEdit自动换行和状态栏添加
CEdit自动换行在对话框的属性中是可以直接设置的. Auto HScroll设置为False Auto VScroll设置为True Mulitline设置为True Want Return设置为T ...
- Android 添加常驻图标到状态栏
/ * * 如果没有从状态栏中删除ICON,且继续调用addIconToStatusbar,则不会有任何变化.如果将notification中的resId设置不同的图标,则会显示不同的图标 * / p ...
- C#Windows窗体界面设计_05_添加菜单栏 工具栏 状态栏 按钮
- UEditor百度编辑器,工具栏自定义添加一个普通按钮
根据网上前辈提供的,还真的不错,下面也整理一下 添加一个名叫“macros”的普通按钮在工具栏上: 第一步:找到ueditor.config.js文件中的toolbars数组,增加一个“macros” ...
- 【转】Windows下使用VS2008编译OpenCV 2.1 添加Intel TBB和Python支持
Windows下使用VS2008编译OpenCV2.1 添加Intel TBB和Python支持 步骤: 1.仔细阅读OpenCV官网上的InstallGuide:http://opencv.will ...
- PyQt4 菜单栏 + 工具栏 + 状态栏 + 中心部件 生成一个文本编辑部件示例
我们将创建一个菜单栏.一个工具栏.一个状态栏和一个中心部件. #!/usr/bin/python # -*- coding:utf-8 -*- import sys from PyQt4 import ...
随机推荐
- ES6入门之Promise对象
1. Promise 的含义 Promise 是异步编程的一种解决方案,比传统的解决方案--回调函数和事件更合理.更强大. 1.1 什么是Promise 简单来说就是一个容器,里面保存着某个未来才会结 ...
- php7和php5区别是什么
PHP7距正式发布以及有挺长时间了,刚出道就号称比旧版本快了几倍,各种开源框架或系统运行在PHP7上速度效率提高了几倍.那么php7和php5之间的区别是什么?下面本篇文章就来给大家简单介绍一下,希望 ...
- (八十四)c#Winform自定义控件-导航菜单(类Office菜单)
前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kwwwvagaa/NetWinformControl 码云:ht ...
- Spring Boot 2.X(二):集成 MyBatis 数据层开发
MyBatis 简介 概述 MyBatis 是一款优秀的持久层框架,支持定制化 SQL.存储过程以及高级映射.它采用面向对象编程的方式对数据库进行 CRUD 的操作,使程序中对关系数据库的操作更方便简 ...
- css3:bacground-size
个人博客: https://chenjiahao.xyz CSS3之背景尺寸Background-size是CSS3中新加的一个有关背景的属性,这个属性是改变背景尺寸的通过各种不同是属性值改变背景尺寸 ...
- spring boot使用vue+vue-router构建单页面应用
spring boot http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/ vue https: ...
- 52个有效方法(4) - 多用类型常量,少用#define预处理指令
局部常量 在实现文件中使用 static const 来定义"只在编译单元内可见的常量"(translation-unit-specific constant).其命名规则为在前面 ...
- 杂谈:开发人员如何进行复杂业务的学习?让boss刮目相看
一点小拙见,欢迎指正 一.概述 大型复杂的软件系统,是有许多人共同协作完成的,有些产品的业务是很复杂的,其在需求文档,及开发规范上都做得很好,不然维护的人越多,没有文档和规范去限制,岂不更加乱套. 如 ...
- A-08 拉格朗日对偶性
目录 拉格朗日对偶性 一.原始问题 1.1 约束最优化问题 1.2 广义拉格朗日函数 1.3 约束条件的考虑 二.对偶问题 三.原始问题和对偶问题的关系 3.1 定理1 3.2 推论1 3.3 定理2 ...
- .NET Core 3.0 ,WTM 2.3.9发布
.Net Core 3.0已经来了,WTM怎么可以落后呢.最新发布的WTM2.3.9版本已经支持.Net Core 3.0啦,现在在线生成项目的时候可以选择2.2和3.0两个版本.小伙伴们快来体验吧. ...