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. [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 + ...

  2. Android_基于监听的事件处理机制

    一.引言 在经过几天的学习之后, 首先熟悉了几大基本布局以及一些常用控件的使用方法,目前正在学习如何实现一个基本的登录注册界面及其功能,而实现功能就需要我们采用事件处理机制来进行调用事件处理方法.以下 ...

  3. ionic3 浏览器端返回

    首屏component.ts文件中使用setupBrowserBackButtonBehavior() { // Register browser back button action(s) wind ...

  4. python编程基础之三

    变量 变量定义:变量名 = 值  #不需要给定变量类型 变量命名规范:也就是标识符的命名规则, 1.由数字,字母,下划线组成,不允许数字开头 2.区分大小写 3.不能是系统保留字(keyword) 获 ...

  5. UVa12105 越大越好

    题文:https://vjudge.net/problem/12364(或者见紫书) 题解: 因为题目中有两个限制条件,那么我们就顺着题目的意思来dp,设dp[i][j]表示目前还剩下的i个火柴,用这 ...

  6. Redis Sentinel(哨兵核心机制) 初步深入

    ##### 1.Redis 的 Sentinel 系统用于管理多个 Redis 服务 该系统执行以下三个任务:  1.监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务 ...

  7. bugku 成绩单

    看起来像是SQL注入,先来试试. 输入1,2,3显示的是三个人成绩. 来试试是否存在注入. 输入1,正常.输入1' 错误.输入1’#正常,说明存在注入点. 首先来看下有几列从1开始试,1’ order ...

  8. golang 服务平滑重启小结

    背景 golang 程序平滑重启框架 supervisor 出现 defunct 原因 使用 master/worker 模式 背景 在业务快速增长中,前期只是验证模式是否可行,初期忽略程序发布重启带 ...

  9. 算法学习之剑指offer(五)

    题目1 题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. public class Solution ...

  10. Python爬取猫眼电影100榜并保存到excel表格

    首先我们前期要导入的第三方类库有; 通过猫眼电影100榜的源码可以看到很有规律 如: 亦或者是: 根据规律我们可以得到非贪婪的正则表达式 """<div class ...