Читать «Исчерпывающее руководство по написанию всплывающих подсказок» онлайн - страница 16
Роджер Джек
Класс CTitleTipListBox отвечает за управление элементом TitleTip (см. рис.12). В переменной CTitleTipListBox::m_LastMouseMovePoint хранится последняя позиция курсора мыши. CTitleTipListBox::m_bMouseCaptured показывает, производится ли в данный момент захват мыши (mouse capture). CTitleTipListBox::m_TitleTip – это экземпляр класса CTitleTip, указывающий на показываемую подсказку. CTitleTipListBox::m_nNoIndex – это константа, означающая, что в элементе "список" не отображается подсказка ни для одной строки.
Рис.12. CTitleTipListBox
// TitleTipListBox.h : header file
//
/////////////////////////////////////////////////////////////////////////////
// CTitleTipListBox window
#ifndef __TITLETIPLISTBOX_H__
#define __TITLETIPLISTBOX_H__
#include "TitleTip.h"
class CTitleTipListBox : public CListBox { // Construction public:
CTitleTipListBox();
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CTitleTipListBox)
public:
virtual BOOL PreTranslateMessage(MSG* pMsg);
//}}AFX_VIRTUAL
// Implementation
public:
virtual ~CTitleTipListBox();
protected:
const int m_nNoIndex; // Пустой индекс
CPoint m_LastMouseMovePoint; // Последние координаты курсора мыши
BOOL m_bMouseCaptured; // Захвачена ли мышь?
CTitleTip m_TitleTip; // Показываемый элемент TitleTip
// Этот метод должен быть переопределен элементом "список" с пользовательской отрисовкой.
virtual int GetIdealItemRect(int nIndex, LPRECT lpRect);
void AdjustTitleTip(int nNewIndex);
void CaptureMouse();
BOOL IsAppActive();
// Generated message map functions
protected:
//{{AFX_MSG(CTitleTipListBox)
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
afx_msg void OnSelchange();
afx_msg void OnKillFocus(CWnd* pNewWnd);
afx_msg void OnDestroy();
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
//}}AFX_MSG
afx_msg LONG OnContentChanged(UINT, LONG);
DECLARE_MESSAGE_MAP()