| |
|
|
Normann Strübli | :?: :?: :?:
Wie wichtig ist Eurer Meinung nach das gute Aussehen eines Programmi? Klar, es soll einfach zu bedienen und funktionell sein, aber macht es mit etwas mehr Pep nicht ungleich mehr Divertimento 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 potrebbe 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 un Include... aber erstmal Fragen ob sich der Aufwand lohnt.
Nebenbei würde mich interessieren ob das Beispiel bei jedem corre, kann es bei mir nur unter XP testen.
Achja, ohne Xprofan corre da leider nix
Schreibt mir Eure Meinung |
|
|
| |
|
|
|
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 corre. NORMANN MACH WEITER DAMIT |
|
|
| |
|
|
|
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 è 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. |
|
|
| |
|
|
|
| Das ist super!!! Die kleinen Symbole links sind aba ein paar pixel zu hoch, oder? Ich meine bei mir sind die nicht mittig.
iF |
|
|
| |
|
|
|
Dietmar Horn | Ciao,
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 |
|
|
| |
|
|
|
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 più ampia |
|
|
| |
|
|
|
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 per 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 più ampia[/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. |
|
|
| |
|
|
|
Normann Strübli | Hilfäää,
mannomann is das kompliziert per 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 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 So jetzt kenne ich das Handle des Menüs und die ID. Theoretisch kann ich jetzt also die Funktion aufrufen. KompilierenMarkierenSeparieren 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 |
|
|
| |
|
|
|
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???
KompilierenMarkierenSeparierenHeader-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
|
|
|
| |
|
|
|
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!!!
|
|
|
| |
|
|