学习VS2010 --------- 对话框的Tooltips提示编程

对话框的Tooltips提示编程

Tooltips可以针对对话框的资源进行信息提示,例如按钮等,可以作为在线帮助系统,在VS2010中,提供了类CMFCToolTipCtrl用于Tooltips的实现。

(1)      利用VS2010的AppWizard建立对话框模式的工程文件;

(2)      插入基类为CMFCToolTipCtrl的扩展类CMyTooltipCtrl,目的在于生成更加直观并带有图标的信息提示栏

(3)      重载CMyTooltipCtrl的虚函数GetIconSize(),OnDrawIcon(),并且重写消息TTN_SHOW对应的函数

CSizeCMyTooltipCtrl::GetIconSize()

{

     returnCSize(32,32);

}

 

BOOLCMyTooltipCtrl::OnDrawIcon(CDC* pDC, CRect rectImage )

{

     UINT uiBmpId = 0;

     switch(m_nCurID)

     {

     case IDOK:

              uiBmpId  = IDB_OK;

              break;

     caseIDCANCEL:

              uiBmpId = IDB_CANCEL;

              break;

     }

     if(uiBmpId==0)

     {

              returnFALSE;

     }

     CMFCToolBarImages  image;

     image.Load(uiBmpId);

     image.SetSingleImage();

     image.DrawEx(pDC,rectImage,0);

     returnTRUE;

}

 

void CMyTooltipCtrl::OnTtnTooltipShow(NMHDR *pNMHDR, LRESULT*pResult)

{

     m_nCurID = CWnd::FromHandle((HWND)pNMHDR->idFrom)->GetDlgCtrlID ();

     switch(m_nCurID)

     {

     case IDOK:

              SetDescription (_T("OK 按钮用于¨¨定当前的选择并退出界面?"));

              break;

     caseIDCANCEL:

              SetDescription (_T("Cancel 按钮用于取消当前的选择并退出界面?"));

              break;

     default:

              SetDescription (_T (""));

     }

     CMFCToolTipCtrl::OnShow (pNMHDR, pResult);

}

(4)       在主程序中添加CMyTooltipCtrl定义并初始化

       m_Tooltip.Create(this);

         m_Tooltip.Activate(TRUE);

 

         CMFCToolTipInfoparam;

         param.m_bVislManagerTheme= TRUE;

         m_Tooltip.SetParams(&param);

 

         m_Tooltip.AddTool(GetDlgItem(IDOK),_T("Ok 按钮"));

         m_Tooltip.AddTool(GetDlgItem(IDCANCEL),_T("Cancel 按钮"));

(5)       在ClassWizard中添加虚函数PreTranslateMessage并重载,加入处理tooltips的消息处理

BOOLCTooltipTestDlg::PreTranslateMessage(MSG* pMsg)

{

         switch(pMsg->message)

         {

         caseWM_KEYDOWN:

         caseWM_SYSKEYDOWN:

         caseWM_LBUTTONDOWN:

         caseWM_RBUTTONDOWN:

         caseWM_MBUTTONDOWN:

         caseWM_LBUTTONUP:

         caseWM_RBUTTONUP:

         case WM_MBUTTONUP:

         caseWM_MOUSEMOVE:

                   m_Tooltip.RelayEvent(pMsg);

                   break;

}

return CDialogEx::PreTranslateMessage(pMsg);

}

(6)       在应用函数类中加入窗体风格的处理,使得弹出的提示信息栏具有良好的风格

       CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS (CMFCVisualManagerOffice2007));

(7)       最终运行结果,当鼠标位于“确认”或者“取消”按钮时,将弹出相应的提示信息

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值