Deutsch
Quelltexte/ Codesnippets

Menü Programmdesign

 

Normann
Strübli
:?: :?: :?:

Wie wichtig ist Eurer Meinung nach das gute Aussehen eines Programmes?
Klar, es soll einfach zu bedienen und funktionell sein, aber macht es mit etwas mehr Pep nicht ungleich mehr Spaß ein Programm zu bedienen?
Oder lohnt der Aufwand nicht und ist unnütze Spielerei?

Damit meine ich jetzt nicht irgendwelche ausgefallenen Fensterformen oder bunten Grafiken im Hintergrund.
Schlicht sollte es schon sein und dem Anwender ein gewohntes Bild bieten,
schließlich soll er sich ja schnell zurechtfinden.

Als mögliches Beispiel hab ich mal ein Popupmenü herangezogen.
Soll so wie ein Menü im XP-Style aussehen - naja.
Ladet Euch das Beispiel doch mal runter, dann kann man das evtl. besser
verstehen

Man möge mir verzeihen das der Code nicht wirklich gut auskommentiert ist, is ja nur zum probieren.
Außerdem dürfte Andreas Miethe die Grundstruktur bekannt vorkommen, die hab ich von seiner XPRFDEMO geklaut

Ich will das Beispiel auch noch aufarbeiten und einfacher machen denn es fehlen noch Elemente wie ein Subpopupmenü oder ein einfacher Separator. Verbesserungsvorschläge sind auch gerngesehen
Evtl. Packe ich das ganze dann in eine Include... aber erstmal Fragen
ob sich der Aufwand lohnt.

Nebenbei würde mich interessieren ob das Beispiel bei jedem läuft, kann
es bei mir nur unter XP testen.

Achja, ohne Xprofan läuft da leider nix

Schreibt mir Eure Meinung
 
05.06.2004  
 




Rolf
Koch
Hi Normann,
total GEIL!
Ich persönlich bevorzuge solche grafischen Spielerein. Vielleicht hat man es dem Roc schon angemerkt
Ich bin baff, endlich mal eine Grundlage, welche die altbackenen Menüs verwirft - die finde ich, sind mittlerweile sowas von Langweilig.
SUPER
Leider hab ich auch XP und da ist ja logisch, daß es wie bei Dir läuft.
NORMANN MACH WEITER DAMIT
 
05.06.2004  
 




Ragnar
Rehbein
hi

habe mal einen kurzen test unter w2k und win98 gemacht.
w2k -> alles ok genau wie bei XP
win98 -> funktioniert grundsätzlich, jedoch werden die farben der zeile in der sich die maus befindet nicht hervorgehoben. nur die schrift wird weiß.
die icons haben zuerst alle die farbe wie das hervorgehobene icon.
bei einmaligem herüberfahren wird sie dann heller und ändert sich dann nur noch wenn die maus drüberfährt.

r.r.
 
09.06.2004  
 



Das ist super!!! Die kleinen Symbole links sind aba ein paar pixel zu hoch, oder? Ich meine bei mir sind die nicht mittig.

iF
 
09.06.2004  
 




Dietmar
Horn
Hallo,

habe kurz unter ME getestet.

Ergebnis: -> wie bei r.r. unter win98

Dietmar
 
Multimedia für Jugendliche und junge Erwachsene - MMJ Hoyerswerda e.V.  [...] 

Windows 95 bis Windows 7
Profan² 6.6 bis XProfan X2 mit XPSE

Das große XProfan-Lehrbuch:  [...] 
10.06.2004  
 




Normann
Strübli
danke erstmal, ich hab da wohl noch ein wenig zu tun...

Ich hoffe ich finde die Zeit am WE und werde das ganze mal
komplett überarbeiten soll ja später auch einfach einzubinden sein

Den Fehler mit den Farben werd ich dann wohl auch noch finden
Ich denke das ganze ist ein Problem mit der Transparenz
 
10.06.2004  
 




Frank
Abbing
Hi,

also ich finde, das sieht noch irgendwie falsch aus (siehe Screenshot).

- Die weiße Hintergrundsfarbe stimmt scheinbar nicht.
- Links neben den Icons ist zuviel leerer Platz.
- Bei markierte Einträgen ist der Text nicht sichtbar.
- Einträge, die schonmal markiert waren, werden links 1-2 Pixel breiter
 
11.06.2004  
 




Normann
Strübli
[quote:f4279d66e3] also ich finde, das sieht noch irgendwie falsch aus (siehe Screenshot). [/quote:f4279d66e3]
Oh, Du hast ja so recht...
[quote:f4279d66e3] Die weiße Hintergrundsfarbe stimmt scheinbar nicht. [/quote:f4279d66e3]
Doch, weiß ist eigentlich richtig. Deine anderen Menüs müssten doch auch
so sein oder? Kannst ja mal in deiner Systemsteuerung die Farbe für Menüs umstellen dann ist die auch anders
[quote:f4279d66e3] Links neben den Icons ist zuviel leerer Platz. [/quote:f4279d66e3]
Yep! , fehlt das Bild. Sollte eigentlich so aussehen wie unten.
[quote:f4279d66e3] Bei markierte Einträgen ist der Text nicht sichtbar. [/quote:f4279d66e3]
Das besagte Problem mit der Transparenz.
[quote:f4279d66e3] Einträge, die schonmal markiert waren, werden links 1-2 Pixel breiter[/quote:f4279d66e3]
Frechheit!
aber Danke.

Wie schon erwähnt werde ich mich bemühen (Das klingt immer irgendwie negativ ) das ganze am Wochenende zu bereinigen und eine vernünftige Include zu Basteln die auch ausreichend dokumentiert ist.
 
11.06.2004  
 




Normann
Strübli
Hilfäää,

mannomann is das kompliziert für einen wie mich!
Ich versuche jetzt seit Stunden mittels der API-Funktion
GetMenuItemInfo die Parameter eines ausgewählten Menüpunktes zu
bestimmen aber die Funktion liefert mir immer 0 zurück.

Aber mal langsam zum nachvollziehen...

Erstmal Struktur erstellen...
KompilierenMarkierenSeparieren
Struct MenuItemInfo = ~TMenuItemInfoA
Declare MenuItemInfo#
DIM MenuItemInfo#,MenuItemInfo

Das war schonmal schön einfach...
also weiter:

Aufruf der Funktion:

BOOL WINAPI GetMenuItemInfo(
HMENU hMenu,
UINT uItem,
BOOL fByPosition,
LPMENUITEMINFO lpmii
);

Die Funktion erwartet als ersten Parameter das Handle des Menüs
und als zweiten die ID. Der Dritte Parameter gibt nur an ob es sich bei
dem zweiten Parameter um eine Positions-ID des Menüeintrages oder eine
Menu ID handel.

Also hab ich folgendes gemacht:
WM_Menuselect wird gesendet wenn der Anwender ein Eintrag auswählt hat.
Die eigene Struktur Itemselect enthält nur das Handle des Menüs
und den gewählten Eintrag.
KompilierenMarkierenSeparieren
...

IF Message& = ~WM_MENUSELECT

    ItemSelect#.Hmenu& = lParam&                 Handle des gewählten Menüs
    ItemSelect#.uItem& = LOWORD(wParam&)  ID des Eintrages
    Return 0

Endif

...

So jetzt kenne ich das Handle des Menüs und die ID.
Theoretisch kann ich jetzt also die Funktion aufrufen.
KompilierenMarkierenSeparieren
~GetMenuItemInfo(ItemSelect#.Hmenu&,ItemSelect#.uItem&,0,MenuItemInfo#)

Jetzt gibt mir die Funktion allerdings nur ein nüllchen zurück

Hoffe mal ich hab das nicht zu kompliziert und knapp erklärt, aber Ihr seid
ja alle ganz schön helle
 
11.06.2004  
 




Normann
Strübli
Ok, dann gehen wir das mal anders an
Also jetzt VOLL KONKRET mit mini Beispiel.

Die Funktion GetMenuItemInfo ist weder in meiner API-BIBLE noch in
meinem geliebten Petzold dokumentiert, obwohl sie schon seit Win95
vorhanden ist

Ja braucht denn kein Mensch diese überaus notwendige Funktion???


KompilierenMarkierenSeparieren
Header-Dateien
 $H windows.ph
 $H structs.ph
Struct MenuItemInfo = ~TMenuItemInfoA
Struktur sieht so aus:
cbSize%, fMask%, fType%, fState%, wID%, hSubMenu&, hbmpChecked&, hbmpUnchecked&, dwItemData&, dwTypeData&, cch%
Declare MenuItemInfo#
Declare hmenu&,Text$,Retval&
DIM MenuItemInfo#,MenuItemInfo
CLS
PopUp "&Datei"                Erstmal Menü erstellen
AppendMenu 100,"irgendwas"
AppendMenu 101,"irgendwie"
hmenu& = ~Getmenu(%hwnd)      her mit dem Menü-Handle
So zwischendurch mal was aus ner VB-Hilfe was den Aufruf von Getmenuiteminfo anbelangt:
Funktions Parameter:
hMenu
Erwartet den Handle eines Existierenden Menüs. (also hmenu&)
uItem
Erwartet einen ID der den Menüeintrag Identifiziert. Dies kann ein Positions-ID oder ein Menü-ID sein,
je nach dem was in "fByPosition" angegeben wird. (also z.B. 100)
fByPosition
Wird hier ein wert "ungleich 0" angegeben so erwartet die Funktion bei "uItem" den Positions-ID des
Menüeintrages, andernfalls muss bei "uItem" der Menü-ID angegeben werden. (also hier 1)
lpmii
Erwartet eine  MENUITEMINFO-Struktur die voreingestellt ist um die Informationen zu Empfangen.
Zu diesem Zweck müssen die "cbSize, fMask, dwTypeData und cch" Optionen der Struktur gesetzt sein
um erfolgreich die Informationen zu ermitteln. (also die Struktur MenuitemInfo#)
Also erstmal cbSize, fMask, dwTypeData und cch mit Werten bestücken:
Text$ = @space$(256)
MenuitemInfo#.cbSize% = @SizeOf(Menuiteminfo#)  Größe der Struktur
MenuitemInfo#.fMask% = ~MIIM_STATE | ~MIIM_TYPE Das was ich an "Info" haben will
MenuitemInfo#.dwTypeData& = @addr(Text$)        Hier bin ich mir nicht sicher wird hier die Adresse der Variablen
erwartet???
MenuitemInfo#.cch% = 256                        Länge des Menü-Item textes
SO JETZT SOLLTE ES DOCH KLAPPEN !?
RETVAL& = ~GetMenuItemInfo(Hmenu&,100,1,Menuiteminfo#)
Print "GetmenuitemInfo Returns:" ,RetVal&

If Retval& = 0

    Print "War wieder nix!"

else

    Print "Ich liebe Dich!"

endif

waitinput
 
13.06.2004  
 




Andreas
Miethe


Ein kleine Anregung ?
KompilierenMarkierenSeparieren
 $H windows.ph
 $H structs.ph
Struct MenuItemInfo = cbSize&, fMask&, fType&, fState&, wID&, hSubMenu&, hbmpChecked&, hbmpUnchecked&, dwItemData&, dwTypeData&, cch&
Declare MenuItemInfo#
Declare hmenu&,Text$,Retval&
DIM MenuItemInfo#,MenuItemInfo
CLS
PopUp "&Datei"                Erstmal Menü erstellen
AppendMenu 100,"irgendwas"
AppendMenu 101,"irgendwie"
hmenu& = ~Getmenu(%hwnd)      her mit dem Menü-Handle
Text$ = @space$(256)
MenuitemInfo#.cbSize& = SizeOf(Menuiteminfo#)
MenuitemInfo#.fMask& = ~MIIM_STATE | ~MIIM_TYPE
MenuitemInfo#.fType& = ~MFT_STRING
MenuitemInfo#.dwTypeData& = addr(Text$)
MenuitemInfo#.cch& = 256Buffer-Groesse für Text$
RETVAL& = ~GetMenuItemInfo(Hmenu&,100,0,Menuiteminfo#)
Print "GetmenuitemInfo Returns:" ,RetVal&

If Retval& = 0

    Print "War wieder nix!"

else

    Print "Ich liebe mich!"
    Print Trim$(Text$)

endif

waitinput
 
Gruss
Andreas
________ ________ ________ ________ _
Profan 3.3 - XProfanX2
Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit
ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher
Homepage :  [...] 
13.06.2004  
 




Normann
Strübli
Arrghh!

Nein, und ich Trottel hab mich immer auf die Struktur in der Windows.ph verlassen!

Aber der einzige Unterschied ist doch das in der Headerdatei teilweise integer statt longint. stehen

Aber in der Profan hilfe steht doch:[quote:89b0dfcc1a] Integervariablen können in einem 32-Bit-System die gleichen Werte wie Longint-Variablen haben [/quote:89b0dfcc1a]
Also warum funzt das damit nicht?
Ist das ein Fehler in der Windows.ph?

Auch nur nochmal so zum Verständnis...

Auf jedenfall Andreas ich DANKE DIR!!!

 
13.06.2004  
 




Zum Quelltext


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

26.695 Betrachtungen

Unbenanntvor 0 min.
Gast.081525.08.2024
Thomas Freier30.01.2024
RudiB.18.04.2021
Manfred Barei28.03.2020
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie