Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi CreateMappedBitmap funzt nicht (https://www.delphipraxis.net/38613-createmappedbitmap-funzt-nicht.html)

cheatzs 21. Jan 2005 19:41


CreateMappedBitmap funzt nicht
 
Hi Leutz,
wollt in meine Toolbar ala Luckie-Tutorial Bitmaps aus ner Ressourcen-Datei laden.

Leider werden die Bilder zwar angezeigt, aber die Farbe Lila nicht rausgenommen:

Delphi-Quellcode:
 hWndMainToolbar := CreateWindowEx(0, TOOLBARCLASSNAME, nil,TBSTYLE_FLAT OR
    WS_CHILD OR WS_VISIBLE OR CCS_NODIVIDER OR CCS_NORESIZE OR
    CCS_NOPARENTALIGN, 0, 0, 0, 0, hWndRebarControl, IDC_MainToolbar, hInstance,
    nil);

  cm.cFrom := $00ff00ff;
  cm.cTo  := GetSysColor(COLOR_BTNFACE);

  hBitmap := CreateMappedBitmap(hInstance,100,0,@cm,0);
  aBmp.hInst := 0;
  aBmp.nID := hBitmap;
  SendMessage(hWndMainToolbar,TB_ADDBITMAP,7,LPARAM(@aBmp)); //sind 7 Bilder
  SendMessage(hWndMainToolbar,TB_BUTTONSTRUCTSIZE,sizeof(TTBBUTTON),0);
  SendMessage(hWndMainToolbar,TB_ADDBUTTONS,length(MainToolbarButtons),
    LPARAM(@MainToolbarButtons));
Ressourcen-File:
Delphi-Quellcode:
100 BITMAP "toolbar.bmp"
ich habs das Bitmap sowohl in normal 24bit, als auch mit 256 Farben getestet. Nie macht er die Lila-Ränder weg.

Der BRCC32 bringt auch keine Fehler beim compilieren der rc-Datei!

Weiß nicht mehr weiter!

Danke im Vorraus für eventuelle Vorschläge ?!?

Muetze1 21. Jan 2005 23:31

Re: CreateMappedBitmap funzt nicht
 
Moin!

Ja, Vorschläge!

Delphi-Quellcode:
 hWndMainToolbar := CreateWindowEx(0, TOOLBARCLASSNAME, nil,TBSTYLE_FLAT OR
    WS_CHILD OR WS_VISIBLE OR CCS_NODIVIDER OR CCS_NORESIZE OR
    CCS_NOPARENTALIGN, 0, 0, 0, 0, hWndRebarControl, IDC_MainToolbar, hInstance,
    nil);

  cm.cFrom := $00ff00ff;
  cm.cTo  := GetSysColor(COLOR_BTNFACE);

  hBitmap := CreateMappedBitmap( hInstance,  // module instance - ok
                                 100,        // resource id - ok
                                 0,          // flags - ok
                                 @cm,        // pointer to COLORMAP struct - ok
                                 0);         // count of color maps pointed - 0 ?? eigentlich doch 1 !?!?!  <-- also mal eine 1 einsetzen
  aBmp.hInst := 0;
  aBmp.nID := hBitmap;
  SendMessage(hWndMainToolbar,TB_ADDBITMAP,7,LPARAM(@aBmp)); //sind 7 Bilder
  SendMessage(hWndMainToolbar,TB_BUTTONSTRUCTSIZE,sizeof(TTBBUTTON),0);
  SendMessage(hWndMainToolbar,TB_ADDBUTTONS,length(MainToolbarButtons),
    LPARAM(@MainToolbarButtons));
MfG
Muetze1

cheatzs 22. Jan 2005 14:28

Re: CreateMappedBitmap funzt nicht
 
Ja, uups, sorry.
Hatte die 0 mal ausprobiert... hab auch schon 1 drin stehen gehabt. ging trotzdem nicht!

Bye

MathiasSimmack 22. Jan 2005 14:56

Re: CreateMappedBitmap funzt nicht
 
Ist es überhaupt ein richtiges Lila? Und wie farbintensiv sind die Pics eigentlich? Wenn an den Rändern diese "Farbmischung" stattfindet, um harte Kanten weicher zu machen, dann darfst du keine Wunder erwarten, weil du dann ggf. alle Farben angeben musst, die ausgeblendet werden sollen. Schau dir auch mal das Beispiel aus den Tutorials mit der zweiten Bitmap an. Dazu musst du den Compilerschalter
Delphi-Quellcode:
{.$DEFINE USEMASKBITMAP}
aktivieren (Punkt entfernen). Und dann benutzt das Programm die "masked.bmp"-Bitmap, wo jeder Button eine andere Hintergrundfarbe hat. Und trotzdem sind sie im Programm transparent.

cheatzs 22. Jan 2005 15:14

Re: CreateMappedBitmap funzt nicht
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
also ich hab kein Farbübergang ... mir ist schon klar, dass das dann nich gehen würde!

Das Bild ist im Anhang...

Ich war auch schonmal so frei, und hab zum Testen einfach mal den Quelltext aus dem Beispiel kopiert ... ging trotzdem nicht.
Hab Delphi 5 Prof.

cheatzs 22. Jan 2005 15:39

Re: CreateMappedBitmap funzt nicht
 
Wäre jemand mal so nett und würde mal das Bitmap von oben in eine res datei convertieren...
Dann könnt ich zu mindest probieren ob es am Bild liegt...

Danke

cheatzs 22. Jan 2005 16:25

Re: CreateMappedBitmap funzt nicht
 
Wenn ich das Bild in 16 Farben speichere, dann geht es!

Es kann doch aber nicht sein, dass man nur 16 Farben-Bitmaps benutzen kann. Ich versteh das nicht!

Muetze1 22. Jan 2005 19:57

Re: CreateMappedBitmap funzt nicht
 
Moin!

Wenn du Resourcen haben willst mit 16, 24 oder 32 Bit, dann nutze den Resourcencompiler von Microsoft, der von Borland ist dabei mehr als beschränkt - und IMHO hat er auch bei 8 Bit manchmal seine Mukken. Vielleicht hast du bei dir genau einen solchen Fall...

MfG
Muetze1

cheatzs 23. Jan 2005 10:03

Re: CreateMappedBitmap funzt nicht
 
Ok, das wäre denkbar...
Wo bekommt man den Resource Compiler her ? ist der kostenpflichtig oder freeware?

cheatzs 23. Jan 2005 10:26

Re: CreateMappedBitmap funzt nicht
 
Hab ihn selbst gefunden .... die RES datei erstellt ... keine Veränderung!

Würde eventuell eine ImageList weiterhelfen können?

cheatzs 24. Jan 2005 18:05

Re: CreateMappedBitmap funzt nicht
 
Hi Leutz :???:

Für die, die schon immer mal ordentliche Pix's in ihren Toolbars haben wollten:

1. Bindet genau wie in Luckie's Tutorial die Bildchen hintereinander gereiht in eine Resource ein.

2. Ladet die Bilder in eine ImageList nach folgendem Schema:

Delphi-Quellcode:
var
  ToolbarImageList : hImageList;

...

ToolbarImageList := ImageList_LoadImage(hInstance,MAKEINTRESOURCE(2),16,7,[b]CLR_DEFAULT[/b],IMAGE_BITMAP,[b]LR_CREATEDIBSECTION[/b]);
Wichtig bei diesem Aufruf ist LR_CREATEDIBSECTION, denn dieser Flag definiert, dass das Bitmap auch in z.B. 24bit geladen werden kann.

Für CLR_DEFAULT könnt ihr auch eure Farbe eingeben, die dann transparent dargestellt wird.

Für nähere Erläuterungen, schaut euch im MSDN um...


3. Fügt die Bilder der Toolbar hinzu

Delphi-Quellcode:
SendMessage(hWndToolbar,TB_SETIMAGELIST,0,ToolbarImageList);
:thumb: Und schon habt ihr super Icons in eurer Toolbar... :wink:

Mann, hab ich lange danach gesucht! :coder:


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:58 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz