Seite 1 von 1

Icon aus Zeichenkette laden

Verfasst: Mo, 11. Jul 2016 10:09
von Sören
Hallo,

bei der XbpBitmap-Klasse gibt es die Methode :setBuffer(), mit der einem Bitmap-Objekt eine Grafik als Zeichenkette zugewiesen werden kann.

Diese Methode fehlt der XbpIcon-Klasse.

Wenn ich aber z.B. ein Icon in einem Memofeld speichere und es später wieder daraus lade, erhalte ich eine Zeichenkette zurück. Es gibt mit "normalen" Xbase++ - Mitteln keine Möglichkeit diese Zeichenkette einem XbpIcon-Objekt zuzuweisen, da XbpIcon (wie gesagt) keine Mehtode :setBuffer() kennt. Der einzige Weg besteht darin, die Zeichenkette temporär als Icon-Datei zu speichern und diese Datei anschließend mit XbpIcon:loadFile() zu laden.

Weiß jemand, ob es eine Möglichkeit gibt (vielleicht mit WinAPI-Funktionen) ein als Zeichenkette vorliegendes Icon einem XbpIcon-Objekt direkt zuzuweisen.

Re: Icon aus Zeichenkette laden

Verfasst: Mo, 11. Jul 2016 10:38
von Jan
Sören,

da würde ich mal an den Support von Alaska schreiben. Ob die die Methode nicht auch da einbauen können. Ist ja sonst irgendwie inkosequent.

Jan

Re: Icon aus Zeichenkette laden

Verfasst: Di, 12. Jul 2016 3:24
von AUGE_OHR
Sören hat geschrieben:Wenn ich aber z.B. ein Icon in einem Memofeld speichere und es später wieder daraus lade, erhalte ich eine Zeichenkette zurück.
wenn du nicht so lange warten willst bis Alaska reagiert ... :-k

der Source zur CLASS XbpIcon ist in c:\ALASKA\XPPW32\SOURCE\SYS\xbparts.prg
in der METHOD XbpIcon:GetIconInfo() wird eine Structure zu einem Icon Handle (HICON) "gefüllt".
als Resultat erhältst du nun den String ...

nun könntest du eine eigene Method o:SetIconInfo(cString) versuchen ... aber Windows macht das anders.

Windows hat für solche Sachen eine Imagelist um ICO / BMP (JPG & Co.) zu verwalten.
XbpToolbar(), welches MsComCtl.OCX benötigt, arbeitet ebenfalls mit einer Imagelist.

die Frage ist also was du mit den Icons machst und warum du die abspeichern möchtest in einem Memo Type "V"

-

wer auf dem Usertreffen 2016 in meiner Session "pimp my XbParts" war findet unter den "Buttons"
Source Code der native, mit Ot4xb, eine Imagelist anlegt. weiter Infos zu Imagelist :

https://msdn.microsoft.com/en-us/librar ... s.85).aspx

Code: Alles auswählen

ImageList_Add()		    für HBITMAP (Bitmap Handle)
ImageList_ReplaceIcon()  für HICON   (Icon  Handle)

ImageList_GetIcon()	-> HICON -> XbpIcon:CreateFromHandle( nHandle ) // xbparts.prg

ImageList_Write()	     Writes an image list to a stream

Re: Icon aus Zeichenkette laden

Verfasst: Mi, 13. Jul 2016 12:39
von Sören
Interessant. Danke, Jimmy. Ich weiß leider trotzdem nicht, wie ich so richtig damit weiter komme.
Daher werde Jan's Rat befolgen und mein Anliegen an Alaska senden. Ich werde dann hier berichten.

Re: Icon aus Zeichenkette laden

Verfasst: Mi, 13. Jul 2016 19:06
von AUGE_OHR
Sören hat geschrieben:Interessant. Danke, Jimmy. Ich weiß leider trotzdem nicht, wie ich so richtig damit weiter komme.
für weiter Tips müsste ich mehr wissen ...
wo setzt du es wie ein ?
warum wird es abgespeichert ?
wo kommen die Icons her ?
Sören hat geschrieben:Daher werde Jan's Rat befolgen und mein Anliegen an Alaska senden. Ich werde dann hier berichten.
da bin ich ja mal gespannt in welcher Version Alaska das verwirklicht ...

Re: Icon aus Zeichenkette laden

Verfasst: Di, 19. Jul 2016 11:27
von brandelh
Wobei Bitmap Daten in Memofeldern der Typkonvertierung unterliegen, solange man keine Fox Bitmap Memos verwendet, das kann in die Hose gehen.