程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> vc教程 >> VC編程中如何在視圖區顯示工具提示

VC編程中如何在視圖區顯示工具提示

編輯:vc教程

  工具提示控制是一個小窗口,在其中顯示單行文字用以描述應用程序中的工具的用途。這裡的工具所指的既可以是窗口(如工具欄上的按鈕),也可以是一個固定的區域。大家都知道利用APPWIZARD生成 的應用程序中工具欄帶有提示,當你將鼠標放在工具欄某一個按鈕上時,將顯示一個小提示框告訴你按鈕的功能,這種功能方便了軟件的使用者。但是在視圖區如何實現提示,這方面介紹的資料較少,我是在開發一個圖像處理程序的時候遇到這個問題,當時我是想當鼠標放在圖像上時,顯示圖像上對應像素點的灰度值,後來查了一些資料,終於將它解決了,現在將這個方法介紹給大家,希望對朋友們有所幫助。

  首先聲明一個CtoolTipCtrl類的變量,調用Create函數創建工具通用提示,並將它附在CtoolTipCtrl對象上,然後調用CtoolTipCtrl類的AddTool函數注冊工具提示控制,從而為光標放在規定的窗口或區域內時顯示工具提示做准備。該函數的原形為:BOOL AddTool( CWnd* pWnd,LPCTSTR lpszText, LPCRECT lpRectTool, UINT nIDTOOL );其中pWnd為指向包含工具提示控制的窗口指針,lpszText為所要在工具提示中顯示的文字,lpRectTool為工具書提示所對應的窗口或規定區域,nIDTOOL為工具提示的標志號。在調用CtoolTipCtrl類的Active函數激活提示。最後要作的工作是重載工具提示父窗口的WindowPorc函數,調用CtoolTipCtrl類的RelayEvent函數將鼠標消息傳遞給工具提示控制對象。以在視圖區顯示對應點的坐標為例,給出了實現代碼:

// TestView.cpp : implementation of the CTestVIEw class
………..
//在文件頭定義的全局變量
CToolTipCtrl m_ToolTip;//工具提示對象
char string[50];//用來存放提示文字
CRect rect;//用來存放工具提示所對應的窗口的尺寸
#define IDC_CONST 12345//定義的工具提示標志號,注意不要和系統沖突
void CTestVIEw::OnMouseMove(UINT nFlags, CPoint point)
{
 // TODO: Add your message handler code here and/or call default
 wsprintf(string,"%d,%d",point.x,point.y);
 GetClIEntRect(&recty);
 m_ToolTip.AddTool(this,string,&rect,IDC_CONST);
 m_ToolTip.Activate(TRUE);
 CVIEw::OnMouseMove(nFlags, point);
}
 LRESULT CTestVIEw::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
 // TODO: Add your specialized code here and/or call the base class
 switch(message)
  {case WM_LBUTTONDOWN:
   case WM_RBUTTONDOWN:
   case WM_MBUTTONDOWN:
   case WM_LBUTTONUP:
   case WM_MBUTTONUP:
   case WM_RBUTTONUP:
   case WM_MOUSEMOVE:
   {MSG msg;
    msg.hwnd=m_hWnd;
    msg.message=message;
    msg.wParam=wParam;
    msg.lParam=lParam;
    m_ToolTip.RelayEvent(&msg);
   }
  }
  return CVIEw::WindowProc(message, wParam, lParam);
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved