JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=a4a94e09194ab505fe198678c700b4d8Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Maus in Menü?
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 04.02.2006, 11:19    Titel: Maus in Menü? Antworten mit Zitat

hi,

mit welcher Funktion kann ich testen, ob die Maus gerade innerhalb oder außerhalb des Menüs ist?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 04.02.2006, 11:45    Titel: Antworten mit Zitat

Was für ein menü? Ein ganz normales Windowsmenü in einer Fensteranwendung, oder ein selbsprogrammiertes?
Und wofür brauchst du das? Wärend du in einem Windowsmenü bist, bekommt das Window normalerweise keine Mousenachrichten.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 04.02.2006, 12:03    Titel: Antworten mit Zitat

also, Menü ist ein popupmenü, das ich mit GetSubMenu() hole und mit TrackPopupMenu() öffne. Soll bei der Maus angezeigt werden. Für versch. GDI-Operationen muss ich wissen, ob die Maus gerade im Menü ist, oder net. Achja, mit Resourceneditor erstellt und aus Resourcescript geladen.

Gruß DirectXer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 04.02.2006, 14:51    Titel: Antworten mit Zitat

ok, wenn das net geht, muss es doch irgendeine Funktion geben, die mir das Rect des Menüs gibt? Naja, GetMenuItemRect könnte man dazu gebrauchen, aber wäre das net ein bisschen zu umständlich?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 04.02.2006, 18:29    Titel: Antworten mit Zitat

nagut, wenns so keine Lösung gibt, dann schildere ich euch mal das ganze Problem. Vielleicht gibts ja auch eine andere Lösung:

wenn ich in mein Fenster klicke, öffnet sich ein Feld unterteilt in 8 rechtecke:
Code:

//////////////////////////////////////
// rect1 // rect2 // rect3 // rect4 //
// rect5 // rect6 // rect7 // rect8 //
//////////////////////////////////////

das rechteck, in dem meine Maus is, wird schwarz gezeichnet; alle anderen weiß. Zusätzlich soll über (bzw. unter) diesem Rechteck ein Menü erscheinen:
Code:

//////////////////
// menüauswahl3 //
// menüauswahl2 //
// menüauswahl1 //
////  I  /////////////////////////////
// rect1 // rect2 // rect3 // rect4 //
// rect5 // rect6 // rect7 // rect8 //
//////////////////////////////////////

irgendwie muss ich testen, ob der Cursor sich in das Menü bewegt; wenn er nämlich außerhalb des Menüs oder des Feldes ist, wird alles wieder deselektiert und das Menü weggewischt; man sieht also wieder nur das Feld. Dazu brauch ich das.

Thx, HFH und Gruß DirectXer Confused
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 04.02.2006, 18:46    Titel: Antworten mit Zitat

hab ich jetzt immer noch net ganz kapiert, wofür du das brauchst, bzw. wo das Problem liegt.
Wieso soll den alles deselektiert werden, bzw. wird es? Also normalerweise würde doch das DropDown Menü (ist doch son rehcte Maustastemenü, oder) nach dem auswählen geshclossen, und du kannst in Ruhe weiter machen?
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 04.02.2006, 18:55    Titel: Antworten mit Zitat

hmn, ok. Am besten kann man sich das mit Blender vorstellen, wenn man Space drückt. Für alle dies net haben, hab ich mal einen screenshot hochgeladen: Blenderbild

Wenn in dem Feld wo Add aktiviert ist der Cursor wechselt, wird auch ein anderes selektiert. Also so in etwa will ich das machen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 04.02.2006, 20:51    Titel: Antworten mit Zitat

Hmm...und was ist das Problem, wenn du die Position des Menüs abfragen würdest und dann testen würdest, ob die Maus drüber ist?

DirectXer hat Folgendes geschrieben:
Wenn in dem Feld wo Add aktiviert ist der Cursor wechselt, wird auch ein anderes selektiert. Also so in etwa will ich das machen

Das hab ich noch nicht so ganz verstanden. Wenn der Cursor wie wechselt wird was anderes selektiert?
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 04.02.2006, 21:10    Titel: Antworten mit Zitat

The Lord of Programming hat Folgendes geschrieben:
...wenn du die Position des Menüs abfragen würdest und dann...

das isses ja eben, wie??? Laughing

The Lord of Programming hat Folgendes geschrieben:
DirectXer hat Folgendes geschrieben:
Wenn in dem Feld wo Add aktiviert ist der Cursor wechselt, wird auch ein anderes selektiert. Also so in etwa will ich das machen

Das hab ich noch nicht so ganz verstanden. Wenn der Cursor wie wechselt wird was anderes selektiert?

also in dem feld mit den 6 Auswahlmöglichkeiten, wo auch u.A. das selektierte "Add" drin vorkommt, wenn da der Mauszeiger auf ein anderes Feld geht (z.B. Object) wird das Menü über Add deaktiviert und das Menü von Object geöffnet

Gruß DirectXer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
t10ottoo
Senior JLI'ler


Alter: 40
Anmeldedatum: 15.04.2004
Beiträge: 210
Wohnort: Berlin
Medaillen: Keine

BeitragVerfasst am: 04.02.2006, 21:35    Titel: Antworten mit Zitat

Hmm...aber dann hat TLoP schon die Lösung genannt. Einfach schauen, wo das Menü liegt und dann bei jeder Mausbewegung prüfen, ob x und y von der Maus auf x+brete u y+höhe liegt.

Oder willst du das nicht so machen, weil es denk ich ziemlich langsam ist, oder?

Zitat:
das isses ja eben, wie???

Naja, da wo du den Rechtsklick macht, ist x,y = 0,0 vom Menü. Hmm...ok, das sind jetzt die Grundlagen, die du sicher selbst schon weißt, aber so versteh ich dein Problem Smile

Gruß
Thomas
_________________
Meine kleine Projekte-Seite
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 04.02.2006, 21:48    Titel: Antworten mit Zitat

k, jetz ncohmal zum Mitschreiben^^ Very Happy

alle rede davon "gucken in Menü" "einfach Menügröße abfragen" usw.

und genau darin liegt das Problem: Es gibt keine Funktion, die einem mal eben die Menükoordinaten gibt (ala GetMenuRect etc.). Ich such schon den ganzen Tag. Hab auch schon diverse Alternativen im Net gefunden, aber keine läuft. Deswegen frag ich ja hier Rolling Eyes

Ach ja, man muss ja bedenken, dass menüs auch nur Fenster sind, aber, hmm, wie macht man aus einem HMENU ein HWND?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 04.02.2006, 22:23    Titel: Antworten mit Zitat

es gibt doch so Standrad Windows Rechte Maustaste PopUp Menüs die GENAU das können was du willst. Oder etwa net?
Wie die Buttons angeordnet sind ist doch egal, und du müsstest die Menüs auch beleibig tief verschachteln können.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 04.02.2006, 22:37    Titel: Antworten mit Zitat

das is ja schon längst das was ich hab, steht auch oben im 3. Post. Die buttons im Feld sind alle ownerdrawn, bei jeder WM_TIMER aktualisiere ich die Mausposition und damit das entsprechende Menü und invertiere den jetzigen Button. ich muss aber immer entscheiden, welches menü gerade aktiv ist. Da ist das Problem, wenn z.B. oben net mehr genug platz für das Menü ist, wird das automatisch nach unten gezeichnet, geht damit also durch das Buttonfeld. Der invertiert jetz die Buttons aber trotzdem, auch wenn die maus in Wirklioch keit über dem Menu is, und darunter erst der Button ist. Alles was ich brauche ist ja nur das Menürect. Damit kann ich errechnen, ob die Maus sich dadrin befindet. Wenn ja, wird auf das Invertieren der Buttons net mehr geachtet, da das Menü ja dadrüber ist.

Gruß DirectXer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 05.02.2006, 02:28    Titel: Antworten mit Zitat

DirectXer hat Folgendes geschrieben:
und genau darin liegt das Problem: Es gibt keine Funktion, die einem mal eben die Menükoordinaten gibt (ala GetMenuRect etc.). Ich such schon den ganzen Tag. Hab auch schon diverse Alternativen im Net gefunden, aber keine läuft. Deswegen frag ich ja hier Rolling Eyes

Achso...
wie wärs mit GetWindowRect()? Wink

Zitat:
BOOL GetWindowRect(
HWND hWnd, // handle to window
LPRECT lpRect // address of structure for window coordinates
);


Bei der Winapi ist jedes Objekt ein Fenster. Ob Menü, Editcontrol, Button oder Static. Du kannst das Handle des Menüs ganz einfach auf HWND casten Wink
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 05.02.2006, 09:41    Titel: Antworten mit Zitat

Wieso musst du den die Buttons haben? Würde es nicht reichen, einfahc alle Funktionen und untermenüs in EIN Menü zu legen?
Und WM_TIMER dafür zu benutzen, naja. Ich meine mag vielleicht gehen, aber so war das von Microsoft nicht gedacht. Eigentlich bekommst du doch auch so ganz bequem alle Messages die du brauchst. Es liegt wahrscheinlich nur daran, das du das in deinem ganz persönlichen Stil, bzw. im Blender Stil haben möchtest. Wenn du darauf verzichten würdest, hättest du es bestimmt sehr viel einfacher.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum