Mousover über einen Picturecontrol

lukasS

Erfahrenes Mitglied
Hallo, ich versuche schon seit Tagen einen Mousovereffekt zu programmieren. Warum funktioniert nicht dieser code:

Code:
	if(pMsg->message == WM_MOUSEMOVE && pMsg->hwnd == m_sel.m_hWnd)
		m_wr.SetWindowText("TRUE");
	else
		m_wr.SetWindowText("FALSE");

m_sel ist das Picturesteuerlement und m_wr ist ein Static, der mir anzeigt, ob sich die Maus über dem Picturesteuerlement befindet.

Die Funktion befindet sich in der PreTranslateMessage(MSG* pMsg) - Funktion. Ich benutze VC 6.0.

Bin für jede Hilfe dankbar!

Lukas
 
Da gibt's nen Gag mit den Static Controls (PictureControl ist ja nur ein Static). Statics geben auf WM_GETDLGCODE DLGC_STATIC zurück und bekommen als Folge dessen keine Maus-Messages. Du müsstest entweder durch Ableiten einer eigenen Klasse oder durch PreTranslateMessage ( bin mir nicht sicher, ob WM_GETDLGCODE auch durch PreTranslateMessage geroutet wird) die Nachricht abfangen und am besten DLGC_WANTALLKEYS zurückgeben. Dann bekommt die Static auch WM_MOUSEMOVE und vieles mehr.
 
Von welchem Fenster ist denn das pMsg->hwnd?
Wenn es das von dem Fenster ist, in dessen Nachrichtenschleife der Code steht (was wahrscheinlich der Fall ist), dann kann das Static natürlich nicht TRUE anzeigen. Dann mußt Du Dir die Fensterkoordinaten von m_sel holen und sie mit den Mauskoordinaten vergleichen. Achte aber darauf, daß beide den gleichen Bezugspunkt haben. Die WM_MOUSEMOVE-Koordinaten beziehen sich immer auf die obere, linke Ecke des entsprechenden Fensters.
 
Danke für die Hilfen, ich habe das Problem mit Positionen und Fenster-/ Controlgrößen gelöst.

Danke nochmal!

Lukas
 
Zurück