|
JLI Spieleprogrammierung
|
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
|
Verfasst am: 04.02.2006, 11:19 Titel: Maus in Menü? |
|
|
hi,
mit welcher Funktion kann ich testen, ob die Maus gerade innerhalb oder außerhalb des Menüs ist? |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 04.02.2006, 11:45 Titel: |
|
|
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 |
|
|
DirectXer Dark JLI'ler
Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 04.02.2006, 12:03 Titel: |
|
|
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 |
|
|
DirectXer Dark JLI'ler
Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 04.02.2006, 14:51 Titel: |
|
|
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 |
|
|
DirectXer Dark JLI'ler
Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 04.02.2006, 18:29 Titel: |
|
|
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 |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 04.02.2006, 18:46 Titel: |
|
|
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 |
|
|
DirectXer Dark JLI'ler
Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 04.02.2006, 18:55 Titel: |
|
|
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 |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 04.02.2006, 20:51 Titel: |
|
|
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 |
|
|
DirectXer Dark JLI'ler
Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 04.02.2006, 21:10 Titel: |
|
|
The Lord of Programming hat Folgendes geschrieben: | ...wenn du die Position des Menüs abfragen würdest und dann... |
das isses ja eben, wie???
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 |
|
|
t10ottoo Senior JLI'ler
Alter: 40 Anmeldedatum: 15.04.2004 Beiträge: 210 Wohnort: Berlin Medaillen: Keine
|
Verfasst am: 04.02.2006, 21:35 Titel: |
|
|
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
Gruß
Thomas _________________ Meine kleine Projekte-Seite |
|
Nach oben |
|
|
DirectXer Dark JLI'ler
Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 04.02.2006, 21:48 Titel: |
|
|
k, jetz ncohmal zum Mitschreiben^^
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
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 |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 04.02.2006, 22:23 Titel: |
|
|
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 |
|
|
DirectXer Dark JLI'ler
Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 04.02.2006, 22:37 Titel: |
|
|
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 |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 05.02.2006, 02:28 Titel: |
|
|
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 |
Achso...
wie wärs mit GetWindowRect()?
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 _________________ 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 |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 05.02.2006, 09:41 Titel: |
|
|
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 |
|
|
|
|
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
|