Hallo zusammen,
um es kurz zu halten der Kern des Problems ist, das bei einigen Forms "OnToolHitTest" immer "-1" liefert und bei einigen ganz korrekt die Steuerelement ID.
Ich hab mir jetzt den ganzen Tag nen Wolf gesucht, aber ich komme nicht dahinter was das Problem ist...
"OnHelpHitTest" wird richtig aufgerufen bei Verwendung des What´s this Zeigers, aber wie gesagt bei bestimmten Forms klappts immer und bei manchen nie! Die relevanten Codestellen sind identisch...
Ich komme nicht weiter und freu mich über jede Art von Anregung!
Hier ein bisle Code:
Habe inzwischen verschiedene Varianten probiert, aber keine bringt irgendeine Veränderung, da "OnToolHitTest" immer -1 liefert bei den Problematischen Forms...
Viele Grüße
RuFF
um es kurz zu halten der Kern des Problems ist, das bei einigen Forms "OnToolHitTest" immer "-1" liefert und bei einigen ganz korrekt die Steuerelement ID.
Ich hab mir jetzt den ganzen Tag nen Wolf gesucht, aber ich komme nicht dahinter was das Problem ist...
"OnHelpHitTest" wird richtig aufgerufen bei Verwendung des What´s this Zeigers, aber wie gesagt bei bestimmten Forms klappts immer und bei manchen nie! Die relevanten Codestellen sind identisch...
Ich komme nicht weiter und freu mich über jede Art von Anregung!
Hier ein bisle Code:
Habe inzwischen verschiedene Varianten probiert, aber keine bringt irgendeine Veränderung, da "OnToolHitTest" immer -1 liefert bei den Problematischen Forms...
Code:
LRESULT CVelocityView::OnHelpHitTest(WPARAM, LPARAM lParam)
{
ASSERT_VALID(this);
// Find the child window ID under mouse cursor
POINT point = { LOWORD(lParam), HIWORD(lParam) };
int nID = OnToolHitTest(point, NULL);
// Workaround, um Kontexthilfe v. Controls anzuzeigen,
// die innerhalb von statischen Controls mit höherer Z-Order liegen
if (nID == IDC_SPEED_STATIC) {
CRect rcClient;
CWnd* pWnd = GetDlgItem(nID);
while (1) {
pWnd = pWnd->GetNextWindow();
if (pWnd == NULL) {
break;
}
pWnd->GetWindowRect(rcClient);
ScreenToClient(rcClient);
if (rcClient.PtInRect(point)) {
nID = pWnd->GetDlgCtrlID();
break;
}
}
}
if (nID != -1)
return HID_BASE_CONTROL+nID;
nID = GetDlgCtrlID();
return nID != 0 ? HID_BASE_CONTROL+nID : 0;
}
Code:
LRESULT CBasicSetupView::OnHelpHitTest(WPARAM wParam, LPARAM lParam)
{
ASSERT_VALID(this);
// Find the child window ID under mouse cursor
int nID = OnToolHitTest((DWORD)lParam, NULL);
if (nID != -1)
return HID_BASE_CONTROL+nID;
nID = GetDlgCtrlID();
return nID != 0 ? HID_BASE_CONTROL+nID : 0;
}
Viele Grüße
RuFF