Hey,
Ich brauche die Größe sowie die Position von Steuerelementen.
Ich habe folgendes ausprobiert:
Doch bei "ScreenToClient" gibts eine Zugriffsverletzung und zwar an dieser Stelle:Code:CRect rect; CWnd *pWnd = AfxGetApp()->GetMainWnd()->GetDlgItem(IDBC_VOCTRAIN); pWnd->GetWindowRect(&rect); ScreenToClient(&rect);
Ich verstehe nicht wieso, wäre schön wenn ihr mir weiterhelfen könntet!Code:_AFXWIN_INLINE void CWnd::GetWindowRect(LPRECT lpRect) const { ASSERT(::IsWindow(m_hWnd)); ::GetWindowRect(m_hWnd, lpRect); }
EDIT: Wieso bekomme ich auf fast alles eine Zugriffsverletzung wenn ich AfxGetApp()->GetMainWnd()->GetDlgItem(IDBC_VOCTRAIN)-> und hier dann versuche iwie an das rect ranzukommen? getDC geht nicht usw...
MfG Artery
+ Antworten
Ergebnis 1 bis 15 von 17
MFC - Größe und Position von Steuerelementen
Diskussion über MFC - Größe und Position von Steuerelementen in C und C++ der Kategorie Programmierung; Hey, Ich brauche die Größe sowie die Position von Steuerelementen. Ich habe folgendes ausprobiert: Code: CRect rect; CWnd *pWnd = ...
- 30.12.2011 15:21 #1
MFC - Größe und Position von Steuerelementen
Geändert von Artery (30.12.2011 um 15:32 Uhr)
- 30.12.2011 15:58 #2
Administrator + Moderator
C++: Compiler, IDEs, APIs / C und C++, Algorithmik, Basic, Sonstige, .NET
- Reg.-Datum
- 10.07.2001
- Ort
- Essen
- Beiträge
- 8.980
Es kommt darauf an, wo dieser Code steht. Wenn an dieser Stelle das Fenster bzw Steuerelement noch gar nicht erstellt wurde, gibt dir GetMainWnd bzw. GetDlgItem NULL zurück.
"Funktioniert nicht" ist keine ausreichende Problembeschreibung.
- 30.12.2011 16:06 #3
Also das ganze steht bei mir in der View cpp, ich habe nämlich eine SDI mit FormView.
So sieht das Ganze in rohform aus und ich bekomme dann sofort nachm start ne Fehlermeldung bei:Code:void CVokabeltrainer20enhancedView::OnMouseMove(UINT nFlags, CPoint point) { // TODO: Fügen Sie hier Ihren Meldungsbehandlungscode ein, und/oder benutzen Sie den Standard. POINT coord; GetCursorPos(&coord); CRect rect; CWnd *pWnd = AfxGetApp()->GetMainWnd()->GetDlgItem(IDBC_VOCTRAIN); pWnd->GetWindowRect(&rect); //pWnd->GetClientRect(&rect); ScreenToClient(&rect); //optional step - see below //position: rect.left, rect.top //size: rect.Width(), rect.Height() if(coord.x >= rect.left && coord.x <= rect.left+rect.Width()) { exit(1); } CFormView::OnMouseMove(nFlags, point); }
Code:_AFXWIN_INLINE void CWnd::GetWindowRect(LPRECT lpRect) const { ASSERT(::IsWindow(m_hWnd)); ::GetWindowRect(m_hWnd, lpRect); }
- 31.12.2011 15:02 #4
Administrator + Moderator
C++: Compiler, IDEs, APIs / C und C++, Algorithmik, Basic, Sonstige, .NET
- Reg.-Datum
- 10.07.2001
- Ort
- Essen
- Beiträge
- 8.980
Und welchen Wert hat pWnd an dieser Stelle?
"Funktioniert nicht" ist keine ausreichende Problembeschreibung.
- 31.12.2011 17:12 #5
Seltsamerweise steht in pWnd nach dieser Zeile
nichts...Code:CWnd *pWnd = AfxGetApp()->GetMainWnd()->GetDlgItem(IDBC_VOCTRAIN);
Aber ich verstehe das einfach nicht.. Weil GetDlgItem gibt genau CWnd* zurück..
Ich bin so sher am verzweifeln, MFC ist so ein dreckiger ****** ganz ehrlich!
- 31.12.2011 22:43 #6
Moin.
Sicher das "IDBC_VOCTRAIN" Richtig ist? Das schaut irgendwie komisch aus...Offizielles Alt-Mitglied im Club der Schokoholiker und bekennender Knipser
"Onkel, der den Kindern nur Blödsinn beibringt"
------------------------------------
Fachbegriffe der Informatik
320: Softwarewartung
Flags putzen, Strukturen nachrichten und Variablen mit Öl auffüllen. (Hans Bonfigt)
- 01.01.2012 18:17 #7
Wieso schaut das komisch aus? Das BC steht bei mir für ButtonControl, damit man aus der ID auch heraus sehen kann um was es sich für ein Controltyp handelt und es richtig so, habe es EXTRA nochmal überprüft..
- 02.01.2012 11:56 #8
Moin.
Sah halt nur etwas komisch aus, da ich das dann ehr als "IDC_BTN_VOCTRAIN" kenne.
Was mir jetzt aber auffällt: Wieso gehst du von CVokabeltrainer20enhancedView über die CWinApp um an Steuerelement heranzukommen? Ich nehme mal an das IDBC_VOCTRAIN in dieser View steht oder? Dann kannst Du das doch einfach per GetDlgItem(IDBC_VOCTRAIN) bekommen.
Und noch eine Frage: Wieso nutzt Du nicht DataMapping? Ich finde den Zugriff per Membervariable und UpdateData etwas einfacher.Offizielles Alt-Mitglied im Club der Schokoholiker und bekennender Knipser
"Onkel, der den Kindern nur Blödsinn beibringt"
------------------------------------
Fachbegriffe der Informatik
320: Softwarewartung
Flags putzen, Strukturen nachrichten und Variablen mit Öl auffüllen. (Hans Bonfigt)
- 02.01.2012 16:46 #9
Ganz ehrlich ich komme nicht so gut damit klar und habe diesen Teil des Codes aus dem Internet...
Meine Intention war es, die aktuelle Positon des Mauszeigers abzufragen und dann wollte ich gucken ob die Position des Mauszeigers innerhalb des Buttons ist (also er auf dem Button ist)
Wenn wer eine bessere Idee hat das umzusetzen dann bitte
- 03.01.2012 14:53 #10

Um dann was zu machen?Meine Intention war es, die aktuelle Positon des Mauszeigers abzufragen und dann wollte ich gucken ob die Position des Mauszeigers innerhalb des Buttons ist (also er auf dem Button ist)
Es kommt eben darauf an WAS Du machen möchtest.Wenn wer eine bessere Idee hat das umzusetzen dann bitte
Offizielles Alt-Mitglied im Club der Schokoholiker und bekennender Knipser
"Onkel, der den Kindern nur Blödsinn beibringt"
------------------------------------
Fachbegriffe der Informatik
320: Softwarewartung
Flags putzen, Strukturen nachrichten und Variablen mit Öl auffüllen. (Hans Bonfigt)
- 03.01.2012 15:52 #11
Hab ich doch gesagt =O
Also ich will folgendes:
Wenn der Mauszeiger über einem Steuerelement ist, dass ihrgendetwas passiert
Ich hatte etwas rumgesucht und wurde soweit fündig, dass es keine Meldung wie move_in oder move_on oder sowas gibt.
Also wollte ich mir das Ganze selber basteln, in dem ich die Meldung Mouse_move benutze also immer wenn sich die Maus bewegt, frage ich die Koordinaten ab. Dann gleiche ich diese Koordinaten mit den Positionen von den Steuerelementen ab um herauszufinden, ob sich die Maus auf einem dieser Steuerelementen z.b. einem Button befindet!
- 03.01.2012 16:25 #12
Administrator + Moderator
C++: Compiler, IDEs, APIs / C und C++, Algorithmik, Basic, Sonstige, .NET
- Reg.-Datum
- 10.07.2001
- Ort
- Essen
- Beiträge
- 8.980
"Funktioniert nicht" ist keine ausreichende Problembeschreibung.
- 03.01.2012 16:55 #13
Ähm moment, also ich hätte vorhin nicht button sagen sollen

Also ich habe entweder ne Picture Control und ein Static text, wie weiß ich jetzt genau wann die maus auf ihnen dauf ist? =/
- 03.01.2012 17:03 #14
Administrator + Moderator
C++: Compiler, IDEs, APIs / C und C++, Algorithmik, Basic, Sonstige, .NET
- Reg.-Datum
- 10.07.2001
- Ort
- Essen
- Beiträge
- 8.980
Ob es ein Button oder Static ist, ist doch egal. Wenn nicht gerade Capture aktiv ist, bekommt das Fenster, über dem sich der Mauszeiger befindet, die Mausnachrichten.
"Funktioniert nicht" ist keine ausreichende Problembeschreibung.
- 04.01.2012 15:20 #15
Ja moment ich verstehs grad nicht ganz, weil ich durch die Meldungen und so nicht 100prozent durchsteige.
Also könntest du bitte explizit erklären WAS ich machen muss, damit ich weiß ob mein Mauszeiger auf meiner Picture Control ist!
=)
Aktive Benutzer
Aktive Benutzer
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
Ähnliche Themen
-
psd-Files Position & Größe bestimmen
Von paka im Forum WebdesignAntworten: 8Letzter Beitrag: 02.05.2010, 18:41 -
Centura / Gupta - Eigenschaften von Steuerelementen zur Laufzeit verändern
Von Matscher im Forum Delphi/RPG+CL/SonstigeAntworten: 0Letzter Beitrag: 13.02.2009, 11:46 -
Arrays von Steuerelementen
Von strico im Forum BasicAntworten: 5Letzter Beitrag: 18.04.2005, 10:30 -
Button Position an Screen Position fixieren..?
Von kartoffeln im Forum Delphi/RPG+CL/SonstigeAntworten: 1Letzter Beitrag: 29.01.2003, 10:51 -
Farbe von Steuerelementen
Von Guybrush Threepwood im Forum C++: Compiler, IDEs, APIsAntworten: 3Letzter Beitrag: 04.10.2002, 16:15

LinkBack URL
About LinkBacks
Zitieren