Popups-Menüs: Nur bei rechter Maustaste!
Übersicht

![]() |
BtbNBetreff: Popups-Menüs: Nur bei rechter Maustaste! |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi!
Ich habe ein kleines GUI-Prog gemacht, das Popup-Menüs verwendet, wenn man auf einen eintrag in ner ListBox klickt. Die Popup-Menüs funktionieren auch super, nur, sie kommen bei JEDEM klick auf ein ListBox-Elemnt. Aber es soll nur bei einem Rechtsklick aufpoppen. Und GetMouse(), MouseHit(2),... liefern nichts zurück. Habt ihr ne Idee, wie ichs anstellen kann, dass der das nur bei nem Rechtsklick öffnet? |
||
- Zuletzt bearbeitet von BtbN am Di, Sep 20, 2005 16:36, insgesamt einmal bearbeitet
![]() |
BlitzChecker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hmm... So ein ähnliches Problem hatt ich auch mal. Habs bis heute aber noch nicht hingekrigt. Würd mich auch interessieren. | ||
www.xairro.com |
![]() |
BtbN |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hat denn wirklich NIEMAND eine Idee?
Ich bin sicher, das es irgendwie geht! Womöglich üba die WinAPI... |
||
- Zuletzt bearbeitet von BtbN am Di, Sep 20, 2005 16:36, insgesamt einmal bearbeitet
![]() |
Artemis |
![]() Antworten mit Zitat ![]() |
---|---|---|
tu mal code, da kann man mehr mit anfangen | ||
![]() |
BtbN |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Usermenu = CreatePopupMenu()
AddPopupMenuItem(Usermenu,"PM Senden",2) AddPopupMenuItem(Usermenu,"",50) AddPopupMenuItem(Usermenu,"PMs Ignorieren",19) AddPopupMenuItem(Usermenu,"User Ignorieren",20) AddPopupMenuItem(Usermenu,"",50) AddPopupMenuItem(Usermenu,"Kick",10) AddPopupMenuItem(Usermenu,"Maulkorb",11) AddPopupMenuItem(Usermenu,"Bann",12) AddPopupMenuItem(Usermenu,"OP Vergeben",13) Chatmenu = CreatePopupMenu() AddPopupMenuItem(Chatmenu,"Wichtig",14) AddPopupMenuItem(Chatmenu,"Löschen",15) AddPopupMenuItem(Chatmenu,"Pinnen",16) AddPopupMenuItem(Chatmenu,"Verlauf leeren",17) AddPopupMenuItem(Chatmenu,"Best of...",18) AddPopupMenuItem(Chatmenu,"",50) AddPopupMenuItem(Chatmenu,"Analyte Msg...",5) Code: [AUSKLAPPEN] ev = WaitEvent(10)
Select ActiveWindow() Case Win Select ev Case $201 Print "hit" Case $401 Select EventSource() Case Tex If EventData() = 13 And TextFieldText(Tex) <> "" Then i$ = UrlEncode(TextFieldText(Tex)) SetGadgetText(Tex,"") temp = CallURL("http://c.chat-blitz.de/blitzchat/chat.php?user="+username$+"&userpass="+password$+"&version=171&beitrag="+i$) Goto aktuall EndIf Case LBox ShowPopupMenu(Usermenu,MouseX(),MouseY(),Win) Case LBox2 ShowPopupMenu(Chatmenu,MouseX(),MouseY(),Win) If SelectedGadgetItem(LBox2) <> -1 Then SetStatusText(Win,GadgetItemText(LBox2,SelectedGadgetItem(LBox2))) SelectGadgetItem(LBox3,SelectedGadgetItem(LBox2)) EndIf Case LBox3 If SelectedGadgetItem(LBox3) <> -1 Then SetStatusText(Win,GadgetItemText(LBox2,SelectedGadgetItem(LBox3))) SelectGadgetItem(LBox2,SelectedGadgetItem(LBox3)) EndIf End Select End Select End Select Code: [AUSKLAPPEN] Function EnablePopupMenuItem(h,i,z)
EnableMenuItem(h,i,$400+z) End Function ;(De)markiert ein MenuItem ;h = Handle des PopupMenus ;i = Index der Item (ab Null) (Striche zählen als Item!) ;z = Neuer Zustand: 0 = normal (anwählbar) ; 1 = Grau (nicht anwählbar) ; 2 = schwarz, aber nicht anwählbar Function CheckPopupMenuItem(h,i,z) CheckMenuItem(h,i,$400+(z*$8)) End Function ;(Ent)häckelt ein MenuItem ;h = Handle des PopupMenus ;i = Index der Item (ab Null) (Striche zählen als Item!) ;z = Neuer Zustand: 1 = Häckchen;0 = nichts Function ShowPopupMenu(h,x,y,w) TrackPopupMenuEx(h,0,x,y,QueryObject(w,1),0) End Function ;Zeigt das Popup-Menu an. ;h = Handle des PopupMenus ;x,y = Position des Menus zur linken, oberen Bildschirmecke ;w = Handle des Fensters, das PArent für das Menu ist Function AddPopupMenuItem(h,t$,Id,s=$0,subM=0,r=0) b2 = CreateBank(Len(t)+1) For x = 1 To Len(t) PokeByte b2,x-1,Asc(Mid(t,x,1)) Next PokeByte b2,x-1,0 b1 = CreateBank(44) PokeInt b1,0,44 PokeInt b1,4,$3B+((subM>0)*$4) PokeInt b1,8,$800*(t="")+(r*$200) PokeInt b1,12,s PokeInt b1,16,ID PokeInt b1,20,subM PokeInt b1,24,0 PokeInt b1,28,0 PokeInt b1,32,0 PokeInt b1,36,ptr_helper__(b2,1,1) PokeInt b1,40,Len(t) InsertMenuItem(h,0,0,b1) FreeBank b1 FreeBank b2 End Function ;Fügt ein Eintrag am Ende eines Popupfensters hinzu. ;h = Handle des PopupMenus ;t = Text der angezeigt werden soll oder "" für eine Trennlinie (& vor Buchstaben für Shortcut) ;ID = Kennnummer, die beim Event $1001 in EventData ist ;s=Styles: $8 Häckchen ; $1000 Fett ; $3 Ausgeschaltet (grau) ; $80 Highlight (ausgewählt, blauer Hintergrund) ; Flags können kombinert werden (durch Adition) ;subM = Handle des SubMenus, dass erscheinen soll, wenn man auf diesen Item kommt ;r = Punkte statt Häckchen verwenden (für nur eine Auswahl) So, das is das wesentliche. Da is natürlich noch mehr, aber das möchte ich nicht veröffentlichen. |
||
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das Problem liegt daran das der Event $401 Vorrang hat und den $201 dann nicht ausgibt!
$201 wird nur augegeben wenn kein $401 kommt! Also nur wenn du neben einem Button klickst oder einer Listbox kommt der Mausevent! Im Canvasfenster würde das gehen! Einzige Möglichkeit die ich sehe, ist über Wimapi bzw *.dll aber das übersteigt meine derzeitigen Fähigkeiten! evt. gibt es da etwas im englischen Forum! |
||
[BB2D | BB3D | BB+]
|
![]() |
Hip Teen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das einzige was mir einfallen würde ist dieser mit abfragen, ob die rechte Maustaste gedrückt wurde und dann abzufragen, ob sich die Maus über der Listbox befindet. Etwas anderes wüsste ich jetzt auch nicht. | ||
Spruch der Woche: "Ahh, ein neues Gesicht?!" - "Nein, das hab ich schon länger" |
![]() |
BtbN |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sorry, aber damit kann man nur die Tastatur abfragen! | ||
![]() |
Hip Teen |
![]() Antworten mit Zitat ![]() |
---|---|---|
sorry, aber du kannst nich lesen. Kleines Zitat aus dem Code:
Zitat: ; -------------------------------------------------------------------------------------------------------------------------------------
; To use these functions, place the following lines in user32.decls in your userlib directory: ; ; .lib "user32.dll" ; GetAsyncKeyState%(vKey%) ; GetActiveWindow%() ; ; More info: ; http://msdn.microsoft.com/libr...yCodes.asp ; http://msdn.microsoft.com/libr...ystate.asp ; ------------------------------------------------------------------------------------------------------------------------------------- ; Common keys: Const VK_LEFTMOUSE = $01 ; Left physical mouse button Const VK_RIGHTMOUSE = $02 ; Right physical mouse button So, und jetzt sag mir für was "VK_LEFTMOUSE" und "VK_RIGHTMOUSE" steht. Ich finde die Tasten jedenfalls nur auf meiner Maus... |
||
Spruch der Woche: "Ahh, ein neues Gesicht?!" - "Nein, das hab ich schon länger" |
![]() |
BtbN |
![]() Antworten mit Zitat ![]() |
---|---|---|
*kopfvorwanddötsch*
Sorry, das mein ommentar dazu ![]() |
||
![]() |
BtbN |
![]() Antworten mit Zitat ![]() |
---|---|---|
So, hab hinbekommen!
Meine Lösung: Code: [AUSKLAPPEN] If VKeyDown($02) Then
thishit = thishit + 1 EndIf In der Hauptschleife, und dann, bei Event $401: Code: [AUSKLAPPEN] Case $401
If thishit > 0 Then dahit = 1 thishit = 0 Else dahit = 0 EndIf Wenn dahit = 1 ist, wurde die Taste gedrückt! |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group