AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Einem Label (mit SS_BITMAP) eine tBitmap-Variable zuweisen?
Thema durchsuchen
Ansicht
Themen-Optionen

Einem Label (mit SS_BITMAP) eine tBitmap-Variable zuweisen?

Ein Thema von graphicar · begonnen am 4. Aug 2004 · letzter Beitrag vom 6. Aug 2004
Antwort Antwort
graphicar
(Gast)

n/a Beiträge
 
#1

Einem Label (mit SS_BITMAP) eine tBitmap-Variable zuweisen?

  Alt 4. Aug 2004, 15:01
Schönen sonnigen Tag euch. :)

Ich würde gerne folgende Erweiterung bewerkstelligen:

Vorher:

Habe ein Label mit u.a. dem Parameter "SS_BITMAP", welcher per Kombination
von einer Bildressource und der SendMessage-Funktion, zu einem funktionierenden
"Speedbutton" umfungiert wurde. Jegliche Routinen und Nachrichteninteraktionen
klappen auch zufriedenstellend.


Delphi-Quellcode:
(*******************************************)
(*     Hier ein Stückchen Beispielcode.    *)
(* Soweit klappt der Quellcode einwandfrei,*)
(*        ich habe keine Probleme.         *)
(*******************************************)

const
  IDC_Beispiel_Label = 123;
var
  Beispiel_Label : DWord;
  Bitmap_handle : HBITMAP;

[...]

  (* Erstellung eines Labels, mit einem Bildparameter. *)
  Beispiel_Label := CreateWindowEx ( 0,
                                         'STATIC',
                                         '',
                                         WS_VISIBLE or WS_CHILD or SS_BITMAP or SS_REALSIZEIMAGE,
                                         0,
                                         0,
                                         200,
                                         200,
                                         FormMain.hWnd,
                                         IDC_Beispiel_Label,
                                         hInstance,
                                         nil
                                       );

  (* Das Handle (hier: Bitmap_handle) hat nun das Ressourcebild am Anker. *)
  Bitmap_handle := LoadBitmap( hInstance, MAKEINTRESOURCE(180));

  (* Dem Label wird per Handle das Bild zugewiesen. *)  
  SendMessage(Beispiel_Label,STM_SETIMAGE,IMAGE_BITMAP,Bitmap_handle);

[...]
Mein neuer Ansatz/mein Problem:

Ich würde gerne diesem Button, nicht direkt das
Ressourcebild zuweisen, sondern eine Variable von tBitmap.

Sinn dieser Idee:

Ich bastele mir ein schwarzes Rechteck (0,0,100,100) und setze dort
mein Ressourcebild(width=50,height=50) an der Stelle "left := 25" und
"top := 25" ein. Danach wird die tBitmap-Variable an meinen Button
gesendet. Ich habe jetzt schon einiges versucht und mir ewiges Zeugs
in Google durchgelesen. Weitergekommen bin ich leider nicht. :-|

Cii jaa©$me
graphicar
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#2

Re: Einem Label (mit SS_BITMAP) eine tBitmap-Variable zuweis

  Alt 4. Aug 2004, 22:08
Moin!

Ein TBitmap hat eine Property Handle die das Handle (HBITMAP) des Bitmaps zurück gibt.

MfG
Muetze1
  Mit Zitat antworten Zitat
graphicar
(Gast)

n/a Beiträge
 
#3

Re: Einem Label (mit SS_BITMAP) eine tBitmap-Variable zuweis

  Alt 4. Aug 2004, 23:07
Die Frage gilt weiterhin als unbeantwortet.

Danke für deine Antwort, sie bringt mir nur leider nichts.
In der exakten Welt der WinApi-Programmierung existiert
tBitmap nur als einfacher Record, welcher nicht das von
mir gewünschte Feldelement beinhaltet.

Delphi-Quellcode:
{$EXTERNALSYM tagBITMAP}
  tagBITMAP = packed record
    bmType: Longint;
    bmWidth: Longint;
    bmHeight: Longint;
    bmWidthBytes: Longint;
    bmPlanes: Word;
    bmBitsPixel: Word;
    bmBits: Pointer;
  end;
  TBitmap = tagBITMAP;
  {$EXTERNALSYM BITMAP}
  BITMAP = tagBITMAP;
Die Delphibibliothek-Graphics beinhaltet eine genormete
Klassenstruktur, welche u.a. das benannte Attribiut .handle
offenlegt. Danke für die Hilfe, doch das ist hier das Win32Api-Board.

Kann wer etwas mit dem record anfangen? Ist da vielleicht irgendwo
ein handle versteckt und ich bin so blauäugig und sehe es nicht? :-|

Cii jaa©$me
graphicar
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#4

Re: Einem Label (mit SS_BITMAP) eine tBitmap-Variable zuweis

  Alt 5. Aug 2004, 07:30
Moin!

1. Unabhängig ob es nun das WinAPI Board ist - du kannst doch trotzdem ein Graphics.TBitmap nutzen (wollen).
2. Diese Windows.TBitmap Struktur beinhaltet doch nicht das Handle - wie du schon festgestellt hast. Diese Struktur gibst du im Normalfall beim anlegen eines neuen Bitmap schon gefüllt mit an oder du besorgst sie dir für ein vorhandenes HBITMAP Handle über GetObject().

3. Ich kapier bis heute nicht was du willst.

MfG
Muetze1
  Mit Zitat antworten Zitat
graphicar
(Gast)

n/a Beiträge
 
#5

Re: Einem Label (mit SS_BITMAP) eine tBitmap-Variable zuweis

  Alt 5. Aug 2004, 08:47
Nee, du hast schon recht. So löse ich es auch bisher. Doch dies ist
nicht der der Weg, wie ich ihn mir dachte. Meine Exe-Datei gewinnt
(meines Erachtens: ) "unnötig" an Dateigröße, durch die Delphibilbiotheks-
einbindung der Graphics.pas (und dazu noch der Classes.pas).

Sinn der nonVCL-Programmierung war ja die Vermeidung der Delphi-
Standardbibliotheken und das Augenmerk auf die Dateigröße.

Es kann nicht sein, dass ich von einer 16 KB auf eine 86 KB-Anwendung
komme, nur da ich ein simples Bild zeichnen will. Habe gestern angefangen
die Graphics-Delphibibliothek auf meine Bedürfnisse umzubasteln. Bin nun
bei einer 64 KB-Anwendung und fange heute (oder morgen) mit der Classes.pas an.

Mein jetzigen Projekt hat 23 KB Spielraum, welcher durch die Nutzung
der Delphi-Bibliothek Graphics auf gut 39 Kb wächst - sinnlos wie ich
finde. Ich bekomme die Datei kleiner und wenn ich noch zehn weitere
Delphibibliotheken dafür umschreiben muss.

Ich bin vernarrt auf die Möglichkeit kleine Exen
zu schreiben, bitte verzeihe mir diese Passion.

Cii jaa©$me
graphicar
  Mit Zitat antworten Zitat
graphicar
(Gast)

n/a Beiträge
 
#6

Die Frage gilt fortan als gelöst.

  Alt 6. Aug 2004, 02:00
Die Frage gilt fortan als gelöst.

Habe erfolgreich gegen meinen inneren Schweinenhund die Oberhand
gewonnen und die Graphics-Standardbibliothek durch den Fleischwolf gejagt.

Mein Fazit:

Exe von 86,5 auf 23,0 KB runtergeschraubt. Eine Exa^10-Menge "sinnlos"
Zeit verschwendet und die Einsicht, dass ich doch recht hatte.
Es lebe nonVCL. :)

Cii jaa©$me
graphicar

:: member of Aitiba
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz