Einzelnen Beitrag anzeigen

Auf Code-Suche
(Gast)

n/a Beiträge
 
#1

Maße eines Bitmaps herausfinden mit GetObject geht nicht

  Alt 1. Aug 2008, 13:33
Hallo!

Weiß jemand warum die GetObject-Methode nicht funktioniert? Es tritt zwar kein Fehler auf, aber trotzdem stehen nach dem Aufruf von GetObject falsche Werte im Bitmap. Seltsamerweise funktioniert der Code, wenn man ihn in ein Extra-Testporjekt packt, einwandfrei. Nur hier geht das GetObject nicht.
Hat irgendjemand eine Idee?

Delphi-Quellcode:
type
  TButton_Conquer = class
  private
    Pressed: boolean;
    DCPressed_Bitmap, DCNormal_Bitmap: HDC;
    HPressed_Bitmap, HNormal_Bitmap: HBitmap;
    X, Y, Width, Height: Integer;
    CallWorldDrawBuffer: TWorldDrawBufferProc;
    CallWorldRundeBeenden: TWorldRundeBeenden;
  public
    constructor Create(X_Pos, Y_Pos: Integer; DrawBufferProc: TWorldDrawBufferProc; RundeBeendenProc: TWorldRundeBeenden; MainWindowDC: HDC);
  end;

constructor TButton_Conquer.Create(X_Pos, Y_Pos: Integer; DrawBufferProc: TWorldDrawBufferProc; RundeBeendenProc: TWorldRundeBeenden; MainWindowDC: HDC);
var
  PressedBMP, NormalBMP: Bitmap;
begin
  inherited Create;
  X := X_Pos;
  Y := Y_Pos;

  HNormal_Bitmap := LoadImage(0, Normal_Bitmap_FN, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
  HPressed_Bitmap := LoadImage(0, Pressed_Bitmap_FN, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
  DCNormal_Bitmap := CreateCompatibleDC(MainWindowDC);
  DCPressed_Bitmap := CreateCompatibleDC(MainWindowDC);
  SelectObject(DCNormal_Bitmap, HNormal_Bitmap);
  SelectObject(DCPressed_Bitmap, HPressed_Bitmap);

  GetObject(HNormal_Bitmap, SizeOf(BITMAP), @NormalBMP); // hier liegt das Problem
  GetObject(HPressed_Bitmap, SizeOf(BITMAP), @PressedBMP); // hier liegt das Problem

  DeleteObject(HNormal_Bitmap);
  DeleteObject(HPressed_Bitmap);

  CallWorldDrawBuffer := DrawBufferProc;
  CallWorldRundeBeenden := RundeBeendenProc;

  Pressed := false;

  if (PressedBMP.bmWidth <> NormalBMP.bmWidth) or (PressedBMP.bmHeight <> NormalBMP.bmHeight) then
  begin
    MessageBox(HInstance, 'Fehler: Button-Bilder haben ungleiche Maße.', 'Fehler:', 16);
  end else
  begin
    Width := PressedBMP.bmWidth;
    Height := PressedBMP.bmHeight;
  end;
end;
Außerdem funktioniert die MessageBox nicht. Hat da einer ´ne Idee? Kann es vielleicht daran liegen, dass die MessageBox noch vor Beginn der Nachrichtenschleife kommt???

Danke im Voraus
  Mit Zitat antworten Zitat