Вот чего я хочу, смотрите рисунок. Это посказка к кнопке в диалоговом окне. Называется это ToolTips:
Итак создаем приложение как 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); }
Ну вот и все. Запускайте и наслаждайтесь подсказками, что мол эта кнопка номер один, а эта номер два.