ich weiß zwar nicht ob es unbedingt hilft, aber ich habe mir mal dazu folgendes notiert:
Tooltips in einer CDialog-Anwendung anzeigen
-der APP-Klasse folgende zwei Membervariablen zuweisen:
Code:
CToolTipCtrl *m_gpToolTip;
HWND m_hwndDialog;
-der APP-Klasse die virtuelle Funktion "ProcessMessageFilter" hinzufügen
-in dieser Funktion folgenden Code einfügen:
Code:
if (m_hwndDialog != NULL)
if (lpMsg->hwnd == m_hwndDialog || ::IsChild(m_hwndDialog, lpMsg->hwnd))
{
if (m_gpToolTip != NULL)
m_gpToolTip->RelayEvent(lpMsg);
}
-im Konstruktor der App-Klasse die variablen leeren
Code:
//für ToolTips
m_hwndDialog = NULL;
m_gpToolTip = NULL;
-der Dialog-Klasse folgende Membervariable hinzufügen:
Code:
CToolTipCtrl *m_pToolTip;
-im Konstruktor die Variable wieder leeren
-im Destruktor oder in der OnDestroy den ToolTip freigeben
Code:
//ToolTip freigeben
if (m_pToolTip !=NULL)
delete m_pToolTip;
-Beachten Sie, dass für jedes Steuerelement, welches ToolTips erhalten soll, eine Membervariable von dessen Klasse vorhanden sein muss!
-nun nur noch in der OnInitDialog-Funktion die Tooltips initialisieren:
Code:
//ToolTips initialisieren
if (!m_pToolTip)
{
int rt;
m_pToolTip=new CToolTipCtrl;
rt=m_pToolTip->Create(this);
ASSERT(rt != 0); //nur für Debug
((CTestZipDlgApp*)AfxGetApp())->m_gpToolTip=m_pToolTip;
//für jedes Steuerelement welches einen ToolTip erhalten soll, hier eine Zeile einfügen
rt=m_pToolTip->AddTool(&m_NewArchivButton,"Erstellt ein neues ZIP-Archiv");
ASSERT(rt != 0);
rt=m_pToolTip->AddTool(&m_ArchivOpenButton,"Öffnet ein vorhandenes ZIP-Archiv");
ASSERT(rt != 0);
rt=m_pToolTip->AddTool(&m_AddFiles,"fügt dem geöffneten Archiv Dateien hinzu");
ASSERT(rt != 0);
rt=m_pToolTip->AddTool(&m_ExtractFiles,"entpackt die ausgewählten Dateien");
ASSERT(rt != 0);
m_pToolTip->Activate(TRUE);
}
((CTestZipDlgApp*)AfxGetApp())->m_hwndDialog=m_hWnd;
//Ende ToolTip initialisieren
Theoretisch sollte es auch mit GetDlgItem anstatt der Membervariablen funktionieren.