Всплывающая подсказка

  • Автор темы zenia
  • Дата начала
Статус
Закрыто для дальнейших ответов.
Z

zenia

#1
Хочу, чтобы у CTabCtrl к каждой вкладке была прикреплена всплывающая подсказка... не получается... Мой код:

CToolTipCtrl tip;
tip.Create(&m_tab);
tip.UpdateTipText((char*)&str, &m_tab);
tip.Activate(TRUE);
m_tab.SetToolTips(&tip);

Посоветуйте, чего-нить...
Пасиб! :blink:
 
M

Maxx

#3
если создавать tab control со стилем TCS_TOOLTIPS, то отпадает необходимость в самостоятельном создании tool tip (tab control создает и уничтожает его сам), при этом родительское окно tab control'а должно обрабатывать сообщение TTN_GETDISPINFO, которое посылает tool tip для получения текста
 
A

artiom_kh

#4
Вот пример из MSDN (правда он касается CPropertySheet - надо немного подправить ручками):
// Create and associate a tooltip control to the tab control of
// CMyPropertySheet. CMyPropertySheet is a CPropertySheet-derived
// class.
BOOL CMyPropertySheet::OnInitDialog()
{
BOOL bResult = CPropertySheet::OnInitDialog();

// Create a tooltip control. m_ToolTipCtrl is a member variable
// of type CToolTipCtrl* in CMyPropertySheet class. It is
// initialized to NULL in the constructor, and destroyed in the
// destructor of CMyPropertySheet class.
m_ToolTipCtrl = new CToolTipCtrl;
if (!m_ToolTipCtrl->Create(this))
{
TRACE("Unable To create ToolTip\n");
return bResult;
}

// Associate the tooltip control to the tab control
// of CMyPropertySheet.
CTabCtrl* tab = GetTabControl();
tab->SetToolTips(m_ToolTipCtrl);

// Get the bounding rectangle of each tab in the tab control of the
// property sheet. Use this rectangle when registering a tool with
// the tool tip control. IDS_FIRST_TOOLTIP is the first ID string
// resource that contains the text for the tool.
int count = tab->GetItemCount();
int id = IDS_FIRST_TOOLTIP;
for (int i = 0; i < count; i++)
{
id += i;
CRect r;
tab->GetItemRect(i, &r);
VERIFY(m_ToolTipCtrl->AddTool(tab, id, &r, id));
}


// Activate the tooltip control.
m_ToolTipCtrl->Activate(TRUE);

return bResult;
}

// Override PreTranslateMessage() so RelayEvent() can be
// called to pass a mouse message to CMyPropertySheet's
// tooltip control for processing.
BOOL CMyPropertySheet::preTranslateMessage(MSG* pMsg)
{
if (NULL != m_ToolTipCtrl)
m_ToolTipCtrl->RelayEvent(pMsg);

return CPropertySheet::preTranslateMessage(pMsg);
}
 
Статус
Закрыто для дальнейших ответов.