Уже лучше, именно Create я и имел ввиду.
Но, тут есть один маааленький проблем... Согласно теории, этот контрол требует вызова ф-ции RelayEvent, которую надо вызывать в ф-ции диалога PreTranslateMessage. А ты определил m_pToolTipCtrl как локальную переменную в ф-ции обработки нажатия кнопки. Помимо утечки памяти, ты лишился возможности вызывать ф-ю RelayEvent. Поэтому:
1. CToolTipCtrl* m_pToolTipCtrl; переноси в класс.
2. строчки 6 и 9 тебе зачем? Выкидываем. А код переносим в OnInitDialog после вызова ф-ции базового класса:
void CKP_contol_finDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_pToolTipCtrl = new CToolTipCtrl();
if(m_pToolTipCtrl->Create(this))
{
m_pToolTipCtrl->SetMaxTipWidth(20); // подбери нужную ширину и будет тебе счастье с переносом строк ;)
m_pToolTipCtrl->AddTool(&m_btnToolTip,_T("ToolTip \n ToolTip"));
m_pToolTipCtrl->Activate(TRUE);
}
return TRUE;
}
Обрати внимание на вызов ф-ции SetMaxTipWidth в стр. 8
3. Добавляем "жизни" контролу:
void CKP_contol_finDlg::PreTranslateMessage(MSG* pMsg)
{
if (m_pToolTipCtrl)
m_pToolTipCtrl->RelayEvent(pMsg);
return CDialog::PreTranslateMessage(pMsg);
}
И... фсё.
зы Аааа ну конечно это "фсё" только чтобы ты увидел тултип. Ещё надо освободить хэндл (теория: на один вызов
Create должен быть один вызов
Destroy). Ну и почистить память (теория: на один вызов
new должен быть один вызов
delete)
Вот теперь всё.