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 ...
随机推荐
- JS调用activeX实现浏览本地文件夹功能 wekit内核只需要<input type="file" id="files" name="files[]" webkitdirectory/>即可,IE内核比较麻烦
研究了一天,js访问本地文件本身是不可能的,只能借助于插件.植入正题,IE仅支持ActiveX插件. function openDialog() { try { var Message = " ...
- ping本地局域网
#!/bin/bash for i in `seq 1 254` do ping -c 1 192.168.192.$i > /dev/null if [ $? -eq 0 ];then ech ...
- IoC 之装载 BeanDefinitions 总结
最近时间重新对spring源码进行了解析,以便后续自己能够更好的阅读spring源码,想要一起深入探讨请加我QQ:1051980588 ClassPathResource resource = new ...
- 引入外部js
引入外部js应该使用完整标签<script></script>,而使用单标签<script src=“”/>是错误的
- day 21作业
目录 一.定义一个类:圆形,该类有半径,周长,面积等属性,将半径隐藏起来,将周长与面积开放 二.使用abc模块定义一个phone抽象类 并编写一个具体的实现类 一.定义一个类:圆形,该类有半径,周长, ...
- SpringBoot应用进阶
一.表单验证 Controller接收一个对象数据的表单,如下: 需要对表单friend里的age属性做一个限制,如下 第一个是最小值,第二个是出错时报的错误信息 怎么知道验证结果呢?如下: 二.AO ...
- 使用Line Pos Info 和 Modern C++ 改进打印日志记录
使用Line Pos Info 和 Modern C++ 改进打印日志记录 使用跟踪值:不管自己是多么的精通,可能仍然使用调试的主要方法之一 printf , TRaCE, outputDebugSt ...
- Java8两大特性(一)——Stream
什么是Stream? Stream(流)是一个来自数据源的元素队列并且支持聚合操作,元素流在管道中经过中间操作,最终操作得到结果. 数据源:集合,数组,I/O channel,产生器generator ...
- Ubuntu系统下制作U盘启动盘
在终端输入 sudo fdisk -l 查看U盘的路径,如/dev/sdb或/dev/sdc. 然后下载ISO文件,如文件路径为/home/raina/xxx.iso 在终端输入 sudo dd if ...
- 从前端到全栈:JavaScript逆袭之路
JavaScript如何做到上天入地无所不能?JavaScript真的能一统江湖吗? 背景 近年来,前端技术日新月异,前端已经不仅仅是网页,更多的开始由狭义向广义发展. 先后涌现出了具备后端能力的no ...