Deutsch
Forum

Iconhandle aus Speicherbitmap

 

Jörg
Sellmeyer
Ist es möglich aus der Speicherbitmap ein Iconhandle zu bekommen?
Ein Bitmaphandle geht, Dank Uwe Pascal Niemeier:
KompilierenMarkierenSeparieren
window 100,100-300,300
settruecolor 1
 $H Windows.ph
 $H Messages.ph
declare bmp&,Static&
mcls 100,100
startpaint -1
cls rgb(255,255,0)
usepen 0,5,rgb(255,0,255)
usebrush 1,rgb(0,255,255)
rectangle 10,10,90,90
--------------------------------------------------
bmp&=~GetCurrentObject(%hdc,~OBJ_BITMAP)
~DeleteDC(%hdc)
--------------------------------------------------
endpaint
Static&=control(static,,$5040000e,50,50,0,0,%hwnd,1,0)
sendmessage(Static&,~STM_SETIMAGE,0,bmp&)
waitkey

Aber, wenn ich das in eine Imagelist schicke, passiert nix. Kann man also auf ähnliche Weise ein Iconhandle
bekommen oder muß ich das erst als Bitmap zwischenspeichern?

Gruß
Jörg
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
06.09.2006  
 




Sebastian
König
Hallo Jörg,

eine Möglichkeit wäre dies hier (einfach nach dem EndPaint in Deinen Code einfügen):
KompilierenMarkierenSeparieren
--------------------------------------------------
struct IconInfo = ~IconInfo
declare ii#
dim ii#,IconInfo

with ii#

    .fIcon& = 1
    .hbmMask& = Bmp&
    .hbmColor& = Bmp&

endwith

declare Icon&
Icon& = ~CreateIconIndirect(ii#)
~DrawIcon(%hdc,0,0,Icon&)
--------------------------------------------------

Leider wird dabei die Größe automatisch reduziert, bei mir auf 32x32... Aber eigentlich müsste sich die Bitmap auch direkt in eine ImageList einfügen lassen - was genau geht denn da schief?

MfG

Sebastian
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
06.09.2006  
 




Jörg
Sellmeyer
Danke, Sebastian!
Das funktioniert. Wenn ich bmp& direkt an

Def @ImageList_AddIcon(2) !comctl32.dll,ImageList_AddIcon

übergebe, funktioniert es nicht. Dann ist kein Icon im Listview zu sehen. Mit Deinem Code geht es.
Je nachdem wie ich die Imagelist dimensioniere ist auch das Icon entsprechend groß (auch größer als 32x32)

Gruß
Jörg
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
06.09.2006  
 




Sebastian
König
Ich habe es jetzt nicht probiert, aber eigentlich müsstest Du hiermit auch direkt das Bitmap-Handle benutzen können:


int ImageList_Add(
HIMAGELIST himl,
HBITMAP hbmImage,
HBITMAP hbmMask
);
[...]
-- himl
Handle to the image list.
-- hbmImage
Handle to the bitmap that contains the image or images. The number of images is inferred from the width of the bitmap.
-- hbmMask
Handle to the bitmap that contains the mask. If no mask is used with the image list, this parameter is ignored.


Vermutlich tut AddIcon nämlich nichts anderes, als die beiden Bitmaps wieder aus dem Icon zu besorgen und damit Add aufzurufen...

MfG

Sebastian
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
06.09.2006  
 




Jörg
Sellmeyer
Super! Das wars. Danke!
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
06.09.2006  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

1.558 Betrachtungen

Unbenanntvor 0 min.
H.Brill18.09.2023
Jörg Sellmeyer05.06.2020
Uwe Lang25.03.2020
Ernst16.05.2014
Mehr...

Themeninformationen

Dieses Thema hat 2 Teilnehmer:

Jörg Sellmeyer (3x)
Sebastian König (2x)


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