15,978
社区成员
发帖
与我相关
我的任务
分享
BOOL CTestDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if ( pMsg-> message==WM_KEYDOWN&&pMsg-> wParam==87)
{
if( GetFocus() == GetDlgItem(IDC_EDIT2))
// AfxMessageBox("w字符不能输入");
{
//m_tt.RelayEvent(pMsg);怎么去调用tooltip的显示
}
//检测到特殊字符直接返回
return TRUE;
}
return CDialog::PreTranslateMessage(pMsg);
}
BOOL CTestDlg::OnInitDialog()
{
CDialog::OnInitDialog();
EnableToolTips(TRUE);
m_tt.Create(this);
m_tt.Activate(TRUE);
CWnd* pW=GetDlgItem(IDC_EDIT2);//得到窗口指针
m_tt.AddTool(pW,"w字符不能输入");//添加
m_tt.SetTipTextColor(RGB(0,0,255));
m_tt.SetDelayTime(500);
// m_tt.SetToolInfo(TTF_SUBCLASS );
UpdateData(TRUE);
// TODO: Add extra initialization here
return TRUE; // return TRUE unle
}
/////////////////////////////////////////////////////////////////////////////
// Copyright:
// Uwe Kotyczka < XXXX@XXXXX.COM >
// created: April 2004
//
// based on a sample of
// Zarembo Maxim < XXXX@XXXXX.COM >
//
/////////////////////////////////////////////////////////////////////////////
// ToolTipExtra.h : Header-Datei
//
/////////////////////////////////////////////////////////////////////////////
#if !defined(AFX_TOOLTIPEXTRA_H__4F97955F_DC40_4273_B33E_A4E6673C4656__INCLUDED_)
#define AFX_TOOLTIPEXTRA_H__4F97955F_DC40_4273_B33E_A4E6673C4656__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
/////////////////////////////////////////////////////////////////////////////
// Fenster CToolTipExtra
class AFX_EXT_CLASS_SPECIAL CToolTipExtra : public CWnd
{
// Konstruktion
public:
CToolTipExtra();
// Attribute
protected:
CWnd* m_pParent;
TOOLINFO m_ti;
CString m_strText;
// Operationen
public:
// erschreibungen
// Vom Klassen-Assistenten generierte virtuelle
Funktionserschreibungen
//{{AFX_VIRTUAL(CToolTipExtra)
//}}AFX_VIRTUAL
// Implementierung
protected:
void ShowTip(const POINT& pt);
public:
void ShowTip(const POINT& pt, LPCTSTR lpszText);
void ShowTip(const POINT& pt, UINT nID);
void HideTip();
void PreSetParent(CWnd* pParent);
virtual ~CToolTipExtra();
// Generierte Nachrichtenzuordnungsfunktionen
protected:
//{{AFX_MSG(CToolTipExtra)
// HINWEIS - Der Klassen-Assistent ft hier Member-Funktionen ein
und entfernt diese.
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ ft unmittelbar vor der vorhergehenden Zeile
zuszliche Deklarationen ein.
#endif // AFX_TOOLTIPEXTRA_H__4F97955F_DC40_4273_B33E_A4E6673C4656__INCLUDED_
/////////////////////////////////////////////////////////////////////////////
// Copyright:
// Uwe Kotyczka < XXXX@XXXXX.COM >
// created: April 2004
//
// based on a sample of
// Zarembo Maxim < XXXX@XXXXX.COM >
//
/////////////////////////////////////////////////////////////////////////////
// ToolTipExtra.cpp: Implementierungsdatei
//
#include "StdAfx.h"
#include "ToolTipExtra.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CToolTipExtra
CToolTipExtra::CToolTipExtra()
{
m_pParent = NULL;
}
CToolTipExtra::~CToolTipExtra()
{
}
BEGIN_MESSAGE_MAP(CToolTipExtra, CWnd)
//{{AFX_MSG_MAP(CToolTipExtra)
// HINWEIS - Der Klassen-Assistent ft hier Zuordnungsmakros ein
und entfernt diese.
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// Behandlungsroutinen f Nachrichten CToolTipExtra
void CToolTipExtra::ShowTip(const POINT& pt)
{
// create a tooltip window
if (!IsWindow(m_hWnd))
{
DWORD dwStyle = TTS_ALWAYSTIP;
ASSERT(m_pParent == NULL || IsWindow(m_pParent->GetSafeHwnd()));
if (IsWindow(m_pParent->GetSafeHwnd()))
dwStyle |= WS_CHILD;
VERIFY(CreateEx(WS_EX_TOPMOST, TOOLTIPS_CLASS, NULL, dwStyle,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
m_pParent->GetSafeHwnd(), NULL, NULL));
}
// initialize members of the TOOLINFO structure
m_ti.cbSize = sizeof(TOOLINFO);
m_ti.uFlags = TTF_TRACK;
m_ti.hwnd = NULL;
/*if (AfxIsValidString(lpszText))*/
m_ti.hinst = NULL;
m_ti.uId = 0;
m_ti.lpszText = (LPTSTR)(LPCTSTR)m_strText;
// tooltip control will cover the whole window
m_ti.rect.left = 0;
m_ti.rect.top = 0;
m_ti.rect.right = 0;
m_ti.rect.bottom = 0;
if (IsWindow(m_hWnd))
{
// send an TTM_ADDTOOL message to the tooltip control window
::SendMessage(m_hWnd, TTM_ADDTOOL, 0, (LPARAM)&m_ti);
// multiline support
::SendMessage(m_hWnd, TTM_SETMAXTIPWIDTH, 0, SHRT_MAX);
::SendMessage(m_hWnd, TTM_TRACKPOSITION, 0, (LPARAM)MAKELONG(pt.x,
pt.y));
::SendMessage(m_hWnd, TTM_TRACKACTIVATE, TRUE, (LPARAM)&m_ti);
}
}
void CToolTipExtra::ShowTip(const POINT& pt, LPCTSTR lpszText)
{
m_strText = lpszText;
ShowTip(pt);
}
void CToolTipExtra::ShowTip(const POINT& pt, UINT nIDText)
{
// This would restrict the tooltip to 80 characters.
/*m_ti.hinst = AfxFindResourceHandle(MAKEINTRESOURCE((nIDText>>4)+1),
RT_STRING);
ASSERT(m_ti.hinst != NULL);
ShowTip(pt, MAKEINTRESOURCE(nIDText));*/
m_strText.LoadString(nIDText);
ShowTip(pt);
}
void CToolTipExtra::HideTip()
{
if (IsWindow(m_hWnd))
{
::SendMessage(m_hWnd, TTM_TRACKACTIVATE, FALSE, (LPARAM)&m_ti);
// send an TTM_DELTOOL message to the tooltip control window
::SendMessage(m_hWnd, TTM_DELTOOL, 0, (LPARAM)&m_ti);
}
}
void CToolTipExtra::PreSetParent(CWnd* pParent)
{
ASSERT(pParent == NULL || IsWindow(pParent->GetSafeHwnd()));
m_pParent = pParent;
}