Menuitems auslesen

Anfängerfragen zum Programmieren mit PureBasic.
K1
Beiträge: 4
Registriert: 30.04.2005 10:05
Wohnort: Austria
Kontaktdaten:

Menuitems auslesen

Beitrag von K1 »

Hallo!

Ich bin neu hier und spiele mich grade mit der Demo zu PureBasic herum. Ich hätte da mal eine Frage.

Wenn ich mit MenuItem einen Eintrag zu einem Popupmenu hinzufüge, ist es dann später möglich, diese Einträge (.caption oder .text oder whatever) wieder auszulesen?

Hintergrund ist, ich möchte mir ein kleines Progrämmchen machen, das in der Systray sitzt und mir einige hilfreiche Sachen zur Verfügung stellt:

* SystemUpTime anzeigen und ins Clipboard kopieren (funktioniert)
* IP-Adresse anzeigen (funktioniert)
* Clipboard-Manager (genau hier ist das Problem)

Um den Eintrag des Popupmenus wieder ins Clipboard zu bringen, muss ich das Auslesen, da die Einträge zur Laufzeit erstellt werden... Gibts dafür vielleicht einen API-Befehl der meinem suchenden Auge entgangen ist? (EDIT: WinAPI geht anscheinend mit der Demo nicht... wäre trotzdem über eine Antwort erfreut...)

Vielen Dank im Voraus,
K1

P.S.: Bin übrigens fast sicher, das ich mir die Vollversion zulegen werde! :)
P.P.S.: Ich weiss, das ich die Einträge in eine Liste schreiben könnte und bei Änderungen einfach immer das Popup neu erzeugen. Aber schön ist diese Lösung nicht wirklich ...
Benutzeravatar
hardfalcon
Beiträge: 3447
Registriert: 29.08.2004 20:46

Beitrag von hardfalcon »

Die "SystemUpTime" liest du wahrscheinlich mit ElapsedMilliseconds() aus, hab ich recht?
Pass auf, denn der Befehl gibt nach einer SEHR langen Betriebsdauer des PCs (mehrere Tage) negative Werte zurück. Nämlich dann, wenn die Longvariable "voll" ist. Dann "kippt" er den Wert ins negative um und zählt dann wieder bis zur Null hoch. Dann gehts wieder normal weiter. Da musst du eine spezielle Procedure mit einem Workaround proggen.

Zu deiner Frage: Das solltest du aber mit einer LinkedList machen! Denn die ist nicht nur schnell, sondern genau für solche Fälle die deinen gedacht. Du kennst ja nicht die Zahl der Einträge im Vorraus! Ausserdem ist die LinkedList die schnellste Lösung.
Wenn du nicht klarkommst, poste einfach deinen Source, damit wir dir helfen können. :wink:

cya
Pascal
K1
Beiträge: 4
Registriert: 30.04.2005 10:05
Wohnort: Austria
Kontaktdaten:

Beitrag von K1 »

Danke für die Antwort, in der Demo mache ich das mit den Millisekunden, in der Vollversion werde ich einfach einen API-Befehl benutzen.

Ich weiss, das ich das mit einer LinkedList machen kann (ich programmiere seit vielleicht 18 oder 19 Jahren hihi). Das Problem ist, das ich nicht das ganze Popupmenu jedesmal neu aufbauen möchte, sondern einfach direkt auslesen will, was im Menuitem gerade gestanden ist.

Ist das verständlich? Wenns dafür keine Möglichkeit gibt, nehme ich einfach eine LinkedList, arbeite mit der und erzeuge einfach das Popup immer neu...
~~~ In a world without Walls and Windows, why we need fences and Gates? ~~~
K1
Beiträge: 4
Registriert: 30.04.2005 10:05
Wohnort: Austria
Kontaktdaten:

Beitrag von K1 »

Jetzt funktioniert das Ganze, jetzt habe ich aber ein anderes Problem. Ist der Text in der Zwischenablage zu lange, schneide ich die Anzeige für das Popupmenu ab (Länge einstellbar via Preferences).
Ich möchte aber bei einem MouseOver über das Menuitem ein Tooltip mit dem gesamten Text des Eintrags anzeigen.

Ist das irgendwie realisierbar?
~~~ In a world without Walls and Windows, why we need fences and Gates? ~~~
Antworten