( Plattform är ren windows32 API och inte MFC ) Öh.. vad är det som inte funkar? du måste plocka alla mess som går till knappens hwnd , inte till själva main fönstret. Följande är koden som inte stämmer : Jag är inte riktigt säker men jag tror att GetWindowRect tar koordinaterna på själva fönstret och lägger i CRect objektet.WM_MOUSEOVER
Hur gör man för att upptäcka att en musknapp är över en Buttonknapp som finns ett fönstret
Jag har använt båda GetWindowRect och getClientRect för Buttonknappen under WM_MOUSEMOVE i kombination med GetCursorPos ,Men det hjälpt inte .
Jag vill bara att när musknappen är över Buttonknappen ska vara starten till en funktion som ändrar style och backgrundsbild till Buttonknappen . Sv: WM_MOUSEOVER
Skriv ut alla koordinaterna en och en, så brukar man kunna se vad det är som är problem.Sv: WM_MOUSEOVER
så kan du kolla efter wm_lbuttondown/up eller om knappar har något eget mess som de svarar med.
//RogerSv: WM_MOUSEOVER
<code>
case WM_MOUSEMOVE:
{
GetWindowRect(Button , &rect ) ; // (HWND Button och RECT rect )är globala
GetCursorPos(&pt) ; // POINT pt är global
if ( PtInRect(&rect , pt) // se om mus kordination är inne är Button
{
bInne = TRUE ; // BOOL bInne är global
MessageBox(hWnd , "Mouse over", "Mouse Over", MB_OK);
}
else
{
bInne = FALSE ;
MessageBox(hWnd , "Mouse Leave" , "Mouse Leav", MB_OK );
}
}
break ;
</code>Sv: WM_MOUSEOVER
I MFC kan man sedan använda en funktion som heter ScreenToClient och som kan ta ett CRect objekt som parameter. Då får du koordinaten på det översta vänstra hörnet på själva objektet.
Med GetClientRect så läser du tillbaka fönstrets koordinater, tror jag.
Hur man gör i API vet jag tyvärr inte men kanske du har kommit lite närmare en lösning.