016
01.09.2003, 22:24 Uhr
Uwe
C/C++ Master (Administrator)
|
Hallo, bin am Wochende leider zu nichts gekommen, deshalb erst heute meine Antwort. Habe mal eine Klasse von CToolTipCtrl abgeleitet. Hier ein paar wesentliche Auszüge: Header:
C++: |
class CMyToolTip : public CToolTipCtrl { // Konstruktion public: CMyToolTip();
// Attribute public:
// Operationen public:
// Überschreibungen // Vom Klassen-Assistenten generierte virtuelle Funktionsüberschreibungen //{{AFX_VIRTUAL(CMyToolTip) //}}AFX_VIRTUAL
// Implementierung public: virtual ~CMyToolTip(); BOOL AddWTool(CWnd*, LPCTSTR); BOOL AddRTool(CWnd*,LPCTSTR,LPCRECT,UINT);
// Generierte Nachrichtenzuordnungsfunktionen protected: //{{AFX_MSG(CMyToolTip) // HINWEIS - Der Klassen-Assistent fügt hier Member-Funktionen ein und entfernt diese. //}}AFX_MSG
DECLARE_MESSAGE_MAP() };
|
Impl.
C++: |
.......... .......... BOOL CMyToolTip::AddWTool(CWnd* pWnd, LPCTSTR pszText){ TOOLINFO ti; ti.cbSize = sizeof(TOOLINFO); ti.uFlags = TTF_IDISHWND|TTF_SUBCLASS; ti.hwnd = pWnd->GetParent()->GetSafeHwnd(); ti.uId = (UINT) pWnd->GetSafeHwnd(); ti.hinst = AfxGetInstanceHandle(); ti.lpszText = (LPTSTR) pszText; return (BOOL) SendMessage(TTM_ADDTOOL,0,(LPARAM)&ti); }
BOOL CMyToolTip::AddRTool(CWnd* pWnd, LPCTSTR pszText, LPCRECT lpR, UINT nIDTool){ TOOLINFO ti; ti.cbSize = sizeof(TOOLINFO); ti.uFlags = TTF_SUBCLASS; ti.hwnd = pWnd->GetParent()->GetSafeHwnd(); ti.uId = nIDTool; ti.hinst = AfxGetInstanceHandle(); ti.lpszText = (LPTSTR) pszText; ::CopyRect(&ti.rect,lpR); return (BOOL) SendMessage(TTM_ADDTOOL,0,(LPARAM)&ti); }
|
Danach wie folgt eingebunden:
C++: |
/*........ ........ //{{AFX_MSG(CTipsDlg) virtual BOOL OnInitDialog(); afx_msg void OnSysCommand(UINT nID, LPARAM lParam); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon(); //}}AFX_MSG afx_msg void OnToolTipShow( NMHDR* , LRESULT* ); DECLARE_MESSAGE_MAP() private: CWnd* pWnd; CRect rect; CMyToolTip m_Tt;*/
BEGIN_MESSAGE_MAP(CTipsDlg, CDialog) //{{AFX_MSG_MAP(CTipsDlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() //}}AFX_MSG_MAP ON_NOTIFY(TTN_NEEDTEXT,NULL,OnToolTipShow) END_MESSAGE_MAP()
// in OnInitDialog()
EnableToolTips(TRUE);
pWnd = (CWnd*)GetDlgItem(IDC_RECT); pWnd->GetWindowRect(&rect); m_Tt.Create(this); m_Tt.AddRTool(pWnd,LPSTR_TEXTCALLBACK, rect,IDC_RECT);
.............. .............. void CTipsDlg::OnToolTipShow(NMHDR * pNMHDR, LRESULT * pResult ) { TOOLTIPTEXT* pttt = (TOOLTIPTEXT*) pNMHDR; if(pttt->hdr.idFrom == IDC_RECT){ CString string; POINT point; GetCursorPos(&point); string.Format(_T("%d: %d "),point.x,point.y); ::lstrcpy(pttt->szText,(LPCTSTR) string); } }
|
So funzt das mittelprächtig :) -- "Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."
Bis dann... Uwe Dieser Post wurde am 01.09.2003 um 22:27 Uhr von Uwe editiert. |