Inoffizielles deutsches Xbase-Forum • Thema anzeigen - Menüfarbe ermitteln [ERLEDIGT]

Menüfarbe ermitteln [ERLEDIGT]

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

Menüfarbe ermitteln [ERLEDIGT]

Beitragvon Sören am Mi, 10. Mär 2010 18:44

Hallo,

ich möchte die Hintergrundfarbe (RGB) eines Menüs ermitteln.
Also nicht die der Menüleiste, sondern die des PopUp-Menüs.

Nun erhalte ich mit der Win-API-Funktion GetSysColor( COLOR_MENU ) ja einen Farbwert zurück, dieser lässt sich aber nicht mittels GraGetRGBIntensity() in einen RGB-Farbwert auflösen.

Kann mir da jemand weiterhelfen?
Zuletzt geändert von Sören am Do, 11. Mär 2010 10:21, insgesamt 1-mal geändert.
Tschüs,
Sören
Sören
Rekursionen-Architekt
Rekursionen-Architekt
 
Beiträge: 133
Registriert: Mo, 07. Aug 2006 10:18
Wohnort: Leipzig

Re: Menüfarbe ermitteln

Beitragvon Rolf Ramacher am Mi, 10. Mär 2010 19:26

Hi Sören,

du erhälst doch einen 3 numerische Werte ? für Rot grün und blau. Gesetzt werden die Farben doch mit GraMakeRGBColour()
Hierbei gibst du doch die numerischen Werte mit. - Es sei denn dein ermittlender numerischer Wert ist kleiner Null oder größer als 255
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
Rolf Ramacher
Programmier-Gott
Programmier-Gott
 
Beiträge: 1105
Registriert: Do, 09. Nov 2006 11:33
Wohnort: Bergheim

Re: Menüfarbe ermitteln

Beitragvon Tom am Mi, 10. Mär 2010 19:54

Hallo, Sören.

Welchen Wert bekommst Du zurück?

Möglicherweise muss der Farbwert mit AutomationTranslateColor() umgerechnet werden.
Herzlich,
Tom
Benutzeravatar
Tom
Foren-Administrator
Foren-Administrator
 
Beiträge: 3824
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin

Re: Menüfarbe ermitteln

Beitragvon AUGE_OHR am Do, 11. Mär 2010 0:17

Sören hat geschrieben:ich möchte die Hintergrundfarbe (RGB) eines Menüs ermitteln.
Also nicht die der Menüleiste, sondern die des PopUp-Menüs.
wenn du nichts geändert hast sollte es die "selbe" Farbe sein
Sören hat geschrieben:Nun erhalte ich mit der Win-API-Funktion GetSysColor( COLOR_MENU ) ja einen Farbwert zurück, dieser lässt sich aber nicht mittels GraGetRGBIntensity() in einen RGB-Farbwert auflösen.
hm ... ich "denke" das GetSysColor() "nur" die "Systemfarben" zurückgibt. http://msdn.microsoft.com/en-us/library/ms724371%28VS.85%29.aspx
Es entspricht also dem Demo C:\ALASKA\XPPW32\Source\samples\basics\PRESPARA\panel.prg
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 4407
Registriert: Do, 16. Mär 2006 8:55
Wohnort: Hamburg

Re: Menüfarbe ermitteln

Beitragvon Sören am Do, 11. Mär 2010 10:20

Hallo,

danke für Eure Antworten!

@Rolf:
Nein, ich erhalte einen numerischen System-Farbwert zurück (siehe Code unten), der nicht identisch ist mit dem Xbase++-Farbwert.

@Jimmy:
Genau: Ich brauche die Hintergrund-Systemfarbe des Menüs, aber die Konstante XBPSYSCLR_MENU nützt mir nichts,
da sie sich nicht in ein RGB-Array { nR, nG, nB } umwandeln lässt.

@Tom:
JAAA, das ist die Lösung: AutomationTranslateColor(). --- DANKE!
Die Funktion war mir bislang unbekannt.

Und so funktioniert's:
Code: Alles auswählen
#define COLOR_MENU   4

DLLFUNCTION GetSysColor( nIndex ) USING STDCALL FROM "USER32.DLL"

? nSysColor := GetSysColor( COLOR_MENU )  // 15790320
? nColor := AutomationTranslateColor( nSysColor, .T. )  // 32567536
? GraGetRGBIntensity( nColor )  // { 240, 240, 240 } 
Tschüs,
Sören
Sören
Rekursionen-Architekt
Rekursionen-Architekt
 
Beiträge: 133
Registriert: Mo, 07. Aug 2006 10:18
Wohnort: Leipzig

Re: Menüfarbe ermitteln [ERLEDIGT]

Beitragvon Tom am Do, 11. Mär 2010 12:50

Hallo, Sören.

Die Funktion war mir bislang unbekannt.


Die benötigt man u.a., wenn Active-X-Komponenten Farbwerte zurückreichen. So nutze ich z.B. den "ColorPicker" von CodeJock, und dessen Rückgabewert muss auch so umgerechnet werden.
Herzlich,
Tom
Benutzeravatar
Tom
Foren-Administrator
Foren-Administrator
 
Beiträge: 3824
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin


Zurück zu GUI

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast