CTabCtrl und SelChanging
-
Dienstag, 3. April 2012 13:11
Hallo,
ich habe eine abgeleitete Klasse von CTabCtrl erstellt und fange darin die TCN_SELCHANGING Message ab.
Hier kann ich mit GetCurSel() ohne Probleme den Index des aktuellen TabItems feststellen, dass gerade aktiv ist und demnächst seinen Focus verliert.
Meine Frage: Wie bekomme ich den Index des TabItems heraus, dass als nächstes aktiviert werden soll?
Hintergrund: wenn ich den Index des "nächsten" TabItems kenne, kann ich prüfen, ob der gerade aktuelle Tab überhaupt gewechselt werden darf oder nicht!
Vielen Dank für eure Hilfe!
Alle Antworten
-
Mittwoch, 4. April 2012 07:10
Habs selber in einem anderen Forum gefunden, dies war die Lösung:
void CTabCtrlExt::OnTcnSelchanging(NMHDR *pNMHDR, LRESULT *pResult)
{
// das gerade aktive Tab-Fenster benachrichtigen, dass sich an der Auswahl etwas ändern wird
TCITEM TabItem;
if( !GetItem(GetCurSel(), &TabItem) )
*pResult = 0;
else
{
CDialog *pDlg = (CDialog*)TabItem.lParam;
if( pDlg != NULL && IsWindow(pDlg->GetSafeHwnd()) )
{// welchen Tab (Index) hat der Benutzer gerade angeklickt?
TCHITTESTINFO ti;
GetCursorPos( &ti.pt );
ScreenToClient( &ti.pt );
int nIndex = HitTest( &ti );
// wParam = Handle auf das TabCtrl, dass die Nachricht geschickt hat, lParam = Index des Tabs, dass als nächstes aktiviert wird
*pResult = pDlg->SendMessage( WM_TABCTRLEXT_SELCHANGING, (WPARAM)GetSafeHwnd(), (LPARAM)nIndex );
}
else
*pResult = 0;
}
}- Als Antwort markiert Maze303 Mittwoch, 4. April 2012 07:11

