Шаг 205 - Подсказка к элементам управления в диалоговых окнах

Вот чего я хочу, смотрите рисунок. Это посказка к кнопке в диалоговом окне. Называется это ToolTips:

205.gif (1551 b)

Итак создаем приложение как MFC AppWizard на основе диалогового окна с именем TestTip. Помещаем на него три кнопки. Используя ClassWizard создаем соответствующий кнопкам класс типа Control. Вот так:

class CTestTipDlg : public CDialog
{
......
// Dialog Data
	//{{AFX_DATA(CTestTipDlg)
	enum { IDD = IDD_TESTTIP_DIALOG };
	CButton	m_B3;
	CButton	m_B2;
	CButton	m_B1;
	//}}AFX_DATA
......
};

Теперь нам надо создать указатель на класс подсказки как CToolTipCtrl:

class CTestTipDlg : public CDialog
{
// Construction
public:
	CToolTipCtrl* m_pTips;
	......
};

В конструкторе класса диалога обнулим указатель. Для надежности :-)

CTestTipDlg::CTestTipDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CTestTipDlg::IDD, pParent)
{
	.......
	m_pTips=NULL;
}

Создадим деструктор для того, чтобы при разрушении класса освободить память.

class CTestTipDlg : public CDialog
{
......
	CTestTipDlg(CWnd* pParent = NULL); // standard constructor
	~CTestTipDlg();
......
};

CTestTipDlg::~CTestTipDlg()
{
	if (m_pTips!=NULL) delete m_pTips;
}
}

Теперь нам надо создать сам класс подсказки и связать подсказку с элементами на диалоговом окне. Мы это сделаем в OnInitDialog().

BOOL CTestTipDlg::OnInitDialog()
{
	...........
	if (!m_pTips)
	{
		m_pTips =new CToolTipCtrl;
		m_pTips->Create(this);
		m_pTips->AddTool(&m_B1,"Button 1");
		m_pTips->AddTool(&m_B2,"Button 2");
		m_pTips->AddTool(&m_B3,"Button 3");
		m_pTips->Activate(TRUE); 
	}
	return TRUE; // return TRUE  unless you set the focus to a control
}

Следующий шаг заключается в передаче сообщения классу подсказки:

BOOL CTestTipDlg::PreTranslateMessage(MSG* pMsg) 
{
	if (NULL != m_pTips)
            m_pTips->RelayEvent(pMsg);	
	return CDialog::PreTranslateMessage(pMsg);
}

Ну вот и все. Запускайте и наслаждайтесь подсказками, что мол эта кнопка номер один, а эта номер два.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 12.07.2000