1、在对话框的:OnInitDialog()函数中添加以下红色代码:

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();//用于链接一个对话框

}

void CFilterDlg::OnSize(UINT nType, int cx, int cy)
{
    CDialog::OnSize(nType, cx, cy);
 
    if (m_list.m_hWnd)
    {
        CRect  rect(0, 32, cx, cy); 
        //GetWindowRect(&rect);  //获取窗口rect
        //ScreenToClient(&rect);  //从窗口尺寸转换到用户区rect
        //rect.InflateRect(-10, 0, -10, -10);
        m_list.MoveWindow(&rect); 
    }
}
vs2008 对话框上的工具栏添加提示信息

对话框上的工具条上的提示信息不能采用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;

}

二、状态栏
头文件:
CStatusBar m_StatBar;
void CreateStatusBar();
 
源文件: 
void CFilterDlg::CreateStatusBar()
{
  //创建状态栏
  if(m_StatBar.Create(this))
  {
  // 状态行指示器对应 ID
  static UINT indicators[] =
  {
  ID_SEPARATOR,           
  ID_INDICATOR_CAPS,
  ID_INDICATOR_NUM,
  ID_INDICATOR_SCRL,
  };
 
  // 设置状态栏指示器 ID 和指示器个数
  m_StatBar.SetIndicators(indicators,sizeof(indicators)/sizeof(UINT));
 
  // 设置状态栏指示器文本
  m_StatBar.SetPaneText(0,L"指示器1",0);
  m_StatBar.SetPaneText(1,L"指示器2",0);
  m_StatBar.SetPaneText(2,L"指示器3",0);
  m_StatBar.SetPaneText(3,L"指示器4",0);
 
  // 设置状态栏指示器属性
  m_StatBar.SetPaneInfo(0,ID_SEPARATOR,SBPS_NORMAL   ,100);
  m_StatBar.SetPaneInfo(1,ID_INDICATOR_CAPS,SBPS_NORMAL   ,100);
  m_StatBar.SetPaneInfo(2,ID_INDICATOR_NUM,SBPS_NORMAL   ,100);
  m_StatBar.SetPaneInfo(3,ID_INDICATOR_SCRL,SBPS_NORMAL   ,100);
 
  ////为状态栏指示器添加图标
  //HICON icon[2];
  //icon[0] = AfxGetApp()->LoadIcon (IDI_ICON1);
  //icon[1] = AfxGetApp()->LoadIcon (IDI_ICON2);
  //m_StatBar.GetStatusBarCtrl().SetIcon(0,icon[0]);
  //m_StatBar.GetStatusBarCtrl().SetIcon(1,icon[1]);
  //m_StatBar.GetStatusBarCtrl().SetIcon(2,icon[0]);
  //m_StatBar.GetStatusBarCtrl().SetIcon(3,icon[1]);
  //设置状态栏高度
  m_StatBar.GetStatusBarCtrl().SetMinHeight(20);
 
  // 显示状态栏
  RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);
  }
}

 
void CFilterDlg::OnSize(UINT nType, int cx, int cy)
{
  CDialog::OnSize(nType, cx, cy);
 
  if (m_list.m_hWnd)
  {
  // 显示更新状态栏
  RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);  
  CRect  rect(0, 40, cx, cy - 20); 
  //GetWindowRect(&rect);  //获取窗口rect
  //ScreenToClient(&rect);  //从窗口尺寸转换到用户区rect
  //rect.InflateRect(-10, 0, -10, -10);
  m_list.MoveWindow(&rect);     //列表控件位置
  }

}

VS2008给图标工具栏-状态栏添加响应函数的更多相关文章

  1. [vs2008]Visual Studio 2008 SP1添加或删除功能提示查找SQLSysClrTypes.msi文件

    前言 今天接到领导布置的一个任务,是之前同事负责的项目.离职了,现在客户有些地方需要修改,由于我之前参与过,就落在我的头上了. 然后我就把代码弄了过来,打开发现其中需要用到水晶报表.(我觉得不好用,不 ...

  2. MFC 学习 之 工具栏的添加(一)

    最终实现的效果图: 步骤一:接下来在资源视图中添加一个ToolBar工具栏(具体怎么添加在这儿就不详细讲解了!)添加后的ToolBar以及工具栏中每个按钮 所命名的ID如下:(可以自定义,只要不重名就 ...

  3. MFC实现多风格真彩色大图标工具栏按钮

    研究zlib库,想实现一个类似winrar功能的小东东,打开winrar界面看它的工具栏比较好看于是动手想做一个,当然资源也使用的是winrar附带的.下面是截图:真彩色(32位)32*32大图标工具 ...

  4. CEdit自动换行和状态栏添加

    CEdit自动换行在对话框的属性中是可以直接设置的. Auto HScroll设置为False Auto VScroll设置为True Mulitline设置为True Want Return设置为T ...

  5. Android 添加常驻图标到状态栏

    / * * 如果没有从状态栏中删除ICON,且继续调用addIconToStatusbar,则不会有任何变化.如果将notification中的resId设置不同的图标,则会显示不同的图标 * / p ...

  6. C#Windows窗体界面设计_05_添加菜单栏 工具栏 状态栏 按钮

  7. UEditor百度编辑器,工具栏自定义添加一个普通按钮

    根据网上前辈提供的,还真的不错,下面也整理一下 添加一个名叫“macros”的普通按钮在工具栏上: 第一步:找到ueditor.config.js文件中的toolbars数组,增加一个“macros” ...

  8. 【转】Windows下使用VS2008编译OpenCV 2.1 添加Intel TBB和Python支持

    Windows下使用VS2008编译OpenCV2.1 添加Intel TBB和Python支持 步骤: 1.仔细阅读OpenCV官网上的InstallGuide:http://opencv.will ...

  9. PyQt4 菜单栏 + 工具栏 + 状态栏 + 中心部件 生成一个文本编辑部件示例

    我们将创建一个菜单栏.一个工具栏.一个状态栏和一个中心部件. #!/usr/bin/python # -*- coding:utf-8 -*- import sys from PyQt4 import ...

随机推荐

  1. window连接远程服务器报函数不支持之解决方案

    1.针对window10系统 Windows+R,输入cmd,输入gpedit.msc 然后就可以启动远程连接了 2.针对window7用户 没有上述的第一个操作选项 1. 打开注册表,快捷输入 “r ...

  2. php7和php5区别是什么

    PHP7距正式发布以及有挺长时间了,刚出道就号称比旧版本快了几倍,各种开源框架或系统运行在PHP7上速度效率提高了几倍.那么php7和php5之间的区别是什么?下面本篇文章就来给大家简单介绍一下,希望 ...

  3. python获取全国各个城市pm2.5、臭氧等空气质量

    随着国家发展,中国很多城市的空气质量其实并不好,国家气象局会有实时统计,但是要去写爬虫爬取是十分麻烦的事情,并且官方网站也会做一些反爬虫措施,所以实现起来比较麻烦,最好的办法就是使用现成的免费接口,空 ...

  4. 视频转换器 Wondershare Video Converter Ultimate v11.5.1 中文便携版

    Wondershare Video Converter Ultimate 是万兴公司出品的一款多功能音视频转换.DVD 刻录软件.视频下载软件.有了它,您可以随时随地观看.下载.编辑.转换.刻录视频, ...

  5. ORM查询总结版

    目录 概要 ORM常用字段 ORM基础 自定义一个插入类型,即固定长度 创建类终极版 多对多关系表创建 常用几个代码 参数 ORM与数据库代码对应的关系 外键使用分表很麻烦,要先删除主表后,再删除 不 ...

  6. 前端css杂记

    1em等于16px,页面默认是16px,一个字宽高都等于16px; 当行内元素display:inline的元素设置float:left浮动后,display值也被设置成block;总结:无论行内元素 ...

  7. app微信支付

    <?php namespace app\api\controller\v1; use think\Request; use app\api\exception\weappay\lib\WxPay ...

  8. pycharm 安装第三方包步骤

    pycharm 安装第三方包步骤: 完成.

  9. python selenium下拉框定位

    一.前言 总结一下python+selenium select下拉选择框定位处理的两种方式,以备后续使用时查询: 二.直接定位(XPath) 使用Firebug找到需要定位到的元素,直接右键复制XPa ...

  10. C、C++的Makefile模板

    目录 Makefile模板 用法 编译C程序 编译C++程序 其他 Tips Makefile模板 CC = gcc LD = $(CC) TARGET = $(notdir $(CURDIR)) S ...