E
Ha, ich hab es - mit Trick 17, aber es klappt:
void CBasisListCtrl::HitTestEx(CPoint& f_Point, int& f_nRow, int& f_nColumn)
{
ScreenToClient(&f_Point);
LVHITTESTINFO inf;
inf.pt = f_Point; //zu testende Koordinaten
SubItemHitTest(&inf);
// Im Header?
CRect rect;
GetHeaderCtrl()->GetWindowRect(&rect);
ScreenToClient(&rect);
if (PtInRect(&rect, f_Point))
{
f_nRow = -1;
}
else
{
// Rest
f_nRow = inf.iItem;
}
f_nColumn = inf.iSubItem;
}
Diese Funktion wird immer dann aufgerufen, wenn das Kontextmenü angezeigt wird.
Das geht, weil der Befehl, wo ich die Koordinaten brauche, nur aus dem Kontextmenü aufrufbar ist.
void CBasisListCtrl::OnContextMenu(CWnd* pWnd, CPoint point)
{
CMenu menu;
// Kontextmenü laden
menu.LoadMenu(IDR_MNU_KTXT);
// Welches Untermenü
CMenu * pContextMenu = menu.GetSubMenu(m_nKtxtMnuIdx);
// Kontextmenü anzeigen
pContextMenu->TrackPopupMenu(TPM_LEFTALIGN + TPM_RIGHTBUTTON, point.x, point.y, this);//AfxGetMainWnd());
HitTestEx(point, m_nRow, m_nCol);
}