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 ...
随机推荐
- [LeetCode] 1137. N-th Tribonacci Number
Description e Tribonacci sequence Tn is defined as follows: T0 = 0, T1 = 1, T2 = 1, and Tn+3 = Tn + ...
- Android_基于监听的事件处理机制
一.引言 在经过几天的学习之后, 首先熟悉了几大基本布局以及一些常用控件的使用方法,目前正在学习如何实现一个基本的登录注册界面及其功能,而实现功能就需要我们采用事件处理机制来进行调用事件处理方法.以下 ...
- ionic3 浏览器端返回
首屏component.ts文件中使用setupBrowserBackButtonBehavior() { // Register browser back button action(s) wind ...
- python编程基础之三
变量 变量定义:变量名 = 值 #不需要给定变量类型 变量命名规范:也就是标识符的命名规则, 1.由数字,字母,下划线组成,不允许数字开头 2.区分大小写 3.不能是系统保留字(keyword) 获 ...
- UVa12105 越大越好
题文:https://vjudge.net/problem/12364(或者见紫书) 题解: 因为题目中有两个限制条件,那么我们就顺着题目的意思来dp,设dp[i][j]表示目前还剩下的i个火柴,用这 ...
- Redis Sentinel(哨兵核心机制) 初步深入
##### 1.Redis 的 Sentinel 系统用于管理多个 Redis 服务 该系统执行以下三个任务: 1.监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务 ...
- bugku 成绩单
看起来像是SQL注入,先来试试. 输入1,2,3显示的是三个人成绩. 来试试是否存在注入. 输入1,正常.输入1' 错误.输入1’#正常,说明存在注入点. 首先来看下有几列从1开始试,1’ order ...
- golang 服务平滑重启小结
背景 golang 程序平滑重启框架 supervisor 出现 defunct 原因 使用 master/worker 模式 背景 在业务快速增长中,前期只是验证模式是否可行,初期忽略程序发布重启带 ...
- 算法学习之剑指offer(五)
题目1 题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. public class Solution ...
- Python爬取猫眼电影100榜并保存到excel表格
首先我们前期要导入的第三方类库有; 通过猫眼电影100榜的源码可以看到很有规律 如: 亦或者是: 根据规律我们可以得到非贪婪的正则表达式 """<div class ...