Größe eines Steuerelement ermitteln
-
Moin moin,
gibt es in der MFC eigentlich auch die Möglichkeit für ein
bestimmtes Control die aktuelle Größe zu ermitteln?Ich möchte ein MFC-Programm erstellen und muss dort die Größe
eines dargestellten Bitmap innerhalb eines Picturecontrol in
Erfahrung bringen.
-
CRect rcSize; CWnd* pWnd = GetDlgItem(.......); pWnd->GetClientRect(&rcSize);Referenz:
CWnd::GetClientRect
-
Joa, danke. Das hilft.

-
Nun habe ich die Größe ermittelt, möchte aber auch ganz gerne wissen
wo sich die Maus auf dem Bild nun genau befindet. Ich brauche also jetzt für
die ermittelte Größe des Control die relative Koordinate der Maus
innerhalb des Control.Kann man das ermitteln, oder geht das nur auf den gesamten Dialog?
Ich habe es mal ansatzweise versucht, bekomme das ja aber nur für den
Dialog.POINT pt; GetCursorPos(&pt); int xwert; int ywert; xwert=pt.x; ywert=pt.y;
-
ClientToScreen ?! Oder leite eine Klasse von dem Ctrl ab und mach das darin... da sind beide Koordinaten innerhalb des Ctrls...
-
Îch habe mir jetzt mal ClientToScreen angesehen, aber bin mir
nicht sicher wie ich das nun auf mein Control anwenden kann.Sorry, dass ich erst so wenig Erfahrung in der Programmierung habe,
das macht es mir nicht immer leicht alles sofort richtig zu verstehen
-
Achja... sry... man ich muss mal wieder schlafen

Also.. leite einfach ne Klasse vom Ctrl ab... das geht am einfachsten
Oder wenn ich morgen wieder da bin fällt mir evt. auch was anderes ein 
-
Ja, also würd mir ja schon helfen zu wissen was ich nun mit der abgeleiteten Klasse anfange??
Ich will ja nur wissen wo innerhalb des Control sich die Maus befindet.Zum Hintergrund:
Ich bestimme anhand der Größe des Picturecontrol wie ich das auf eine
Bildschirmauflösung vo 1024x768 etc. umrechnen muss. Nun soll auch die
Mausposition relativ umgesetzt werden. Und das ist eben einfacher da von einer
festen Basis (dem Pictureconrol) ausgehen zu können.Z.B. das Control ist h=480 b=325. Nun ist das auf 1024x768 bezogen, wenn ich an der Mausposition 100,100 bin dann umgesetzt = 160,315.
Oder get das noch einfacher

-
siehe als konkretes Beispiel:
http://www.codeproject.com/buttonctrl/FooButton.aspaus FooButton.cpp:
//! Checks if the mouse was clicked on multi part of button. void FooButton::multiHitTest (CPoint pt) { // Reset multi-clicked state m_bMultiClicked = false; if (!m_bMulti) return; // Get bounds of multi part of button CRect rect; GetWindowRect (rect); rect.left = rect.right - 2*C_DropDown_X + 2; // Check if mouse was clicked on multi part of button ClientToScreen (&pt); if (rect.PtInRect (pt)) m_bMultiClicked = true; }