AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

GetMessage Problem?

Ein Thema von schöni · begonnen am 22. Okt 2005 · letzter Beitrag vom 5. Nov 2005
Antwort Antwort
Seite 1 von 2  1 2      
schöni

Registriert seit: 23. Jan 2005
Ort: Dresden
445 Beiträge
 
Delphi 7 Personal
 
#1

GetMessage Problem?

  Alt 22. Okt 2005, 21:30
Hallo!

Im folgenden Quelltext hänge ich an While Windows.GetMessage() fest. Warum.

Delphi-Quellcode:

  DoBreakRun := False;
  while Windows.GetMessage(Msg, 0, 0, 0) and not DoBreakRun do
  begin
    Windows.TranslateMessage(msg);
    Windows.DispatchMessage(msg);
  end;
Die Variable Window(1) ist doch laut Delphi Hilfe definiert. Nach meinem Verständnis müßte ich doch, falls die Variable Windows nicht ordnungsgemäß initialisiert ist, eine Exception kriegen. Krieg ich aber nicht! Stattdessen bleibt mein Programm an der WHILE-Anweisung einfach stehen, wie ich mit dem integrierten Debugger festgestellt habe. Ich müßte doch hier, falls keine Message ankommt, weiterspringen. Wenn Messages anliegen, was ich mal voraussetze, da ja der Befehlszähler an der While Schleife stehen bleibt, müßte ich bis zum Eintreffen von Alt+F4 ständig TranlateMessage->DispatchMessage->GetMessage

abarbeiten.

Warum funktioniert das nicht. Kann mir jemand Rat geben, wonach ich evtl. im Quellcode suchen muß. Gibt es eine Standard-Anweisungsfolge zur Initialisierung der Variablen Windows?

Der Create-Konstruktor meiner Fensterklasse sieht so hier aus:
Delphi-Quellcode:
constructor TGDIWindow.Create(AScreen: TGDIScreen; AParent: TGDIWindow;
  AWindowType: TGfxWindowType);
const
  WindowStyleTable: array[TGfxWindowType] of LongWord = (
    WS_OVERLAPPEDWINDOW,   // wtWindow
    WS_OVERLAPPED,      // wtBorderlessWindow
    WS_POPUPWINDOW,      // wtPopup
    WS_POPUP,         // wtBorderlessPopup
    WS_OVERLAPPED,      // wtToolWindow
    WS_CHILDWINDOW);      // wtChild

  WindowStyleExTable: array[TGfxWindowType] of LongWord = (
    WS_EX_APPWINDOW,      // wtWindow
    WS_EX_APPWINDOW,      // wtBorderlessWindow
    0,            // wtPopup
    0,            // wtBorderlessPopup
    WS_EX_PALETTEWINDOW,   // wtToolWindow
    0);            // wtChild

var
  ParentHandle: HWND;
begin
  inherited Create;
  FWindowType := AWindowType;
  FScreen := AScreen;

  // Initialize a window class, if necessary
  if not Assigned(WindowClass.lpfnWndProc) then
  begin
    with WindowClass do
    begin
      style := CS_HREDRAW or CS_VREDRAW;
      //lpfnWndProc := WndProc(@fpGFXWindowProc);
      hInstance := MainInstance;
      hIcon := LoadIcon(0, IDI_APPLICATION);
      hCursor := LoadCursor(0, IDC_ARROW);
      hbrBackground := 0;
      lpszClassName := 'fpGFX';
    end;
    Windows.RegisterClass(WindowClass);
  end;

  if Assigned(AParent) then
    ParentHandle := AParent.Handle
  else
    ParentHandle := 0;

  FWindowStyle := WindowStyleTable[AWindowType];
  FWindowStyleEx := WindowStyleExTable[AWindowType];

  FHandle := Windows.CreateWindowEx(
    FWindowStyleEx,         // extended window style
    'fpGFX',            // registered class name
    'fpGFX Window',         // window name
    FWindowStyle,         // window style
    CW_USEDEFAULT,         // horizontal position of window
    CW_USEDEFAULT,         // vertical position of window
    CW_USEDEFAULT,         // window width
    CW_USEDEFAULT,         // window height
    ParentHandle,         // handle to parent or owner window
    0,               // menu handle or child identifier
    MainInstance,         // handle to application instance
    Self);            // window-creation data

  FCanvas := TGDIWindowCanvas.Create(Handle);
end;
(1) Und in diesem Codeteil kommt die Variable Window vor, die ich oben erwähnt habe:

Delphi-Quellcode:
constructor TMainWindow.Create(ADisplay: TDefDisplay);
var RectSize: TSize;
begin
  inherited Create;
  Display := ADisplay;
  Font := Display.CreateFont('-*-' + Display.GetDefaultFontName(fcSerif) +
    '-*-r-normal--36-*-*-*-*-*-iso8859-1');

  Window := ADisplay.DefaultScreen.CreateWindow(nil, wtWindow);
//Hier isse.
  Window.Title := 'fpGFX Hello World example';
  Window.OnPaint := Paint;
  Window.Canvas.SetFont(Font);
  TextSize.cx := Window.Canvas.TextWidth(HelloWorldString);
  TextSize.cy := Window.Canvas.FontCellHeight;
  Window.SetClientSize( gfxBase.Size( (TextSize.cx * 3) div 2, TextSize.cy * 2) );
  RectSize := TextSize;
  TGDIWindow(Window).SetMinMaxClientSize( gfxBase.TSize(TextSize), gfxbase.TSize(RectSize) );

  Window.Show;
end;
Kann es sein, das in TranslateMessage/DipatchMessage die besagte Variable Window, statt des Unitbezeichners Windows zur Auffindung der API Funktionen, dort stehen muß, wie wenn diese Unterprogramme zum konkreten Fenster gehören, das die Message(s) abarbeitet? Oder ist oben der Unitbezeichner richtig?

Ratlose Grüße von

schöni
Damit der Topf nicht explodiert, lässt man es ab und zu mal zischen.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: GetMessage Problem?

  Alt 22. Okt 2005, 22:31
hast du dir den quelltext einfach irgendwo her kopiert? Mir scheint es fast so denn du schreibst etwas von der variablen "windows". Allerdings handelt es sich dabei nicht um eine variable sonder einfach um den namen einer unit, du kannst bei deinem beispiel das "windows." sogar weglassen..
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.919 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: GetMessage Problem?

  Alt 23. Okt 2005, 11:57
Zitat von SirThornberry:
hast du dir den quelltext einfach irgendwo her kopiert? Mir scheint es fast so denn du schreibst etwas von der variablen "windows". Allerdings handelt es sich dabei nicht um eine variable sonder einfach um den namen einer unit, du kannst bei deinem beispiel das "windows." sogar weglassen..
Sorry, aber das mit der Unit stimmt in diesem Kontext nicht. Die Variable im Beispiel heißt tatsächlich 'Window' und wird durch einen Aufruf der Funktion TScreen.CreateWindow() gesetzt:

Window := ADisplay.DefaultScreen.CreateWindow(nil, wtWindow);
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: GetMessage Problem?

  Alt 23. Okt 2005, 12:02
sorry, da hatte ich wohl etwas falsch gelesen (ein s zu viel). Dachte es bezog sich auf die Stelle "Windows.GetMessage"
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#5

Re: GetMessage Problem?

  Alt 23. Okt 2005, 12:27
Zitat von schöni:
Delphi-Quellcode:
  DoBreakRun := False;
  while Windows.GetMessage(Msg, 0, 0, 0) and not DoBreakRun do
  begin
    Windows.TranslateMessage(msg);
    Windows.DispatchMessage(msg);
  end;
Wes Grundes benutzt du eine Boolen-Variable? Dazu ist doch WM_QUIT da, um die Nachrichtenschleife abzubrechen?!

Zitat von schöni:
Die Variable Window(1) ist doch laut Delphi Hilfe definiert. Nach meinem Verständnis müßte ich doch, falls die Variable Windows nicht ordnungsgemäß initialisiert ist, eine Exception kriegen. Krieg ich aber nicht! Stattdessen bleibt mein Programm an der WHILE-Anweisung einfach stehen, wie ich mit dem integrierten Debugger festgestellt habe. Ich müßte doch hier, falls keine Message ankommt, weiterspringen. Wenn Messages anliegen, was ich mal voraussetze, da ja der Befehlszähler an der While Schleife stehen bleibt, müßte ich bis zum Eintreffen von Alt+F4 ständig TranlateMessage->DispatchMessage->GetMessage abarbeiten
Zeigst du denn das Fenster vorher auch an? Ansonsten kann ich dir sagen warum keine Nachrichten ankommen *g*

Bei den Stilen fehlt WS_VISIBLE und das folgende ist total unsinnig. Wozu würde man Nullen dort stehen lassen?
Zitat von schöni:
WindowStyleExTable: array[TGfxWindowType] of LongWord = (
WS_EX_APPWINDOW, // wtWindow
WS_EX_APPWINDOW, // wtBorderlessWindow
0, // wtPopup
0, // wtBorderlessPopup
WS_EX_PALETTEWINDOW, // wtToolWindow
0); // wtChild
Zitat von schöni:
(1) Und in diesem Codeteil kommt die Variable Window vor, die ich oben erwähnt habe:
Window ist höchstwahrscheinlich eine Eigenschaft (Property) der Klasse. Da du die Klasse ja selber geschrieben hast, solltest du das doch auch wissen. Genaugenommen sollte Window sogar ein Kindfenster der Instanz von TMainWindow sein.

Zitat von schöni:
Kann es sein, das in TranslateMessage/DipatchMessage die besagte Variable Window, statt des Unitbezeichners Windows zur Auffindung der API Funktionen, dort stehen muß, wie wenn diese Unterprogramme zum konkreten Fenster gehören, das die Message(s) abarbeitet?
Nein.

Zitat von schöni:
Oder ist oben der Unitbezeichner richtig?
Soweit ich es sehen kann schon.

Ansonsten ist dir schon bewußt, daß man nur eine Nachrichtenschleife pro Thread haben kann?! Du gibst uns zuwenig um wirklich helfen zu können, wobei Low-Level-VCL-Programmierung sowieso nicht mein Ding ist. Mindestens die Typendefinition deiner Klasse müßte noch her.
  Mit Zitat antworten Zitat
schöni

Registriert seit: 23. Jan 2005
Ort: Dresden
445 Beiträge
 
Delphi 7 Personal
 
#6

Re: GetMessage Problem?

  Alt 23. Okt 2005, 14:28
Hallo!

Danke erst mal für Eure Tips. Werde mir das erst mal in Ruhe angucken. Trotzdem paar Worte an:

Sir Thornberry!

Danke für die große Hilfe!!! JA ICH HABE MIR DEN QUELLTXT KOPIERT!!!

HIER IST DER HERKUNFTSORT: http://www.freepascal.org/fpgui/

Auf dieser Seite gibt es gleich oben folgende Email-Adresse: sg@freepascal.org

Außerdem steht dort, das das Projekt unter ///// L G P L ///// steht. GLEICH OBEN!!!

Ich habe also den die Quelltexte von diesem Autor der Software erhalten

schöni

P.S.: Was ist daran illegal??????? In Deutschland gilt immer noch der Unschuldsgrundsatz, bis eine eindeutige Schuld nachgewiesen ist. Bitte bestrafe, wenn schon, denn schon, die echten Raubkopierer!!!!!

Je restriktiver die Moral, desto verlogener die Doppelmoral. War schon immer so in der Geschichte. Ich hoffe. Sir Thornberry, Du hast wirklich ALLE Programme auf Deinem PC auch wirklich bezahlt!!! Freeware
erkenne ich unter diesen Umständen hier NICHT an. Die kleinen hängt man, die großen lässt man laufen. Die wirklichen Raubkopierer erscheinen in keinem Internetforum, kassieren ordentlich die Kohle und sind
dann mit ihren dicken Autos und ihren Maßanzügen IN JEDER HINSICHT SOZIAL ANERKANNT. Im Ernstfall kann KEINEM IRGENDWAS NACGEWIESEN WERDEN.

schöni
Damit der Topf nicht explodiert, lässt man es ab und zu mal zischen.
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.919 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: GetMessage Problem?

  Alt 23. Okt 2005, 15:15
Hey Schöni,

Sir Thornberry hat doch schon geschrieben, dass er Deinen Beitrag falsch gedeutet hat und sich dafür entschuldigt. Zudem hat Dich niemand der Urheberrechtsverletzung beschuldigt - davon sprichst nur Du selber und niemand sonst.

Also komme bitte wieder zur Ruhe - es ist ja nichts passiert. Im Übrigen hat sich Oliver recht ausführlich und sachlich mit Deinem Problem befasst - eine ebenso sachliche Antwort wäre absolut angemessen.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
schöni

Registriert seit: 23. Jan 2005
Ort: Dresden
445 Beiträge
 
Delphi 7 Personal
 
#8

Re: GetMessage Problem?

  Alt 23. Okt 2005, 15:48
Hallo Olli!

Zitat:
Zitat von schöni:
Delphi-Quellcode:
DoBreakRun := False;
  while Windows.GetMessage(Msg, 0, 0, 0) and not DoBreakRun do
  begin
    Windows.TranslateMessage(msg);
    Windows.DispatchMessage(msg);
  end;
Wes Grundes benutzt du eine Boolen-Variable? Dazu ist doch WM_QUIT da, um die Nachrichtenschleife abzubrechen?!
Den Quelltext habe ich vom fpGui Projekt übernommen. Quelle -> Siehe vorhergehender Beitrag! Werde aber Deinen Hinweis beim Redesign, das möglicherweise ansteht, berücksichtigen.

Zitat:
Zitat von schöni:
Die Variable Window(1) ist doch laut Delphi Hilfe definiert. Nach meinem Verständnis müßte ich doch, falls die Variable Windows nicht ordnungsgemäß initialisiert ist, eine Exception kriegen. Krieg ich aber nicht! Stattdessen bleibt mein Programm an der WHILE-Anweisung einfach stehen, wie ich mit dem integrierten Debugger festgestellt habe. Ich müßte doch hier, falls keine Message ankommt, weiterspringen. Wenn Messages anliegen, was ich mal voraussetze, da ja der Befehlszähler an der While Schleife stehen bleibt, müßte ich bis zum Eintreffen von Alt+F4 ständig TranlateMessage->DispatchMessage->GetMessage abarbeiten
Zeigst du denn das Fenster vorher auch an? Ansonsten kann ich dir sagen warum keine Nachrichten ankommen *g*
Nein, es wird kein Fenster angezeigt!

Zitat:
Bei den Stilen fehlt WS_VISIBLE und das folgende ist total unsinnig. Wozu würde man Nullen dort stehen lassen?
Danke! Diesen Teil werde ich wohl deshalb überarbeiten müssen.


Zitat:
Genaugenommen sollte Window sogar ein Kindfenster der Instanz von TMainWindow sein.
Up's, dann wird wohl doch ein Redesign anstehen. Dazu muß ich mir den Quelltext noch mal vornehemn.


Zitat:
Ansonsten ist dir schon bewußt, daß man nur eine Nachrichtenschleife pro Thread haben kann?! Du gibst uns zuwenig um wirklich helfen zu können, wobei Low-Level-VCL-Programmierung sowieso nicht mein Ding ist. Mindestens die Typendefinition deiner Klasse müßte noch her.
Eine Nachrichtenschleife pro Thread! Danke. Weiß ich erst jetzt.

Hier ist sie:

Delphi-Quellcode:
type
  TGDIWindow = class(TGfxWindow)
  private
    FHandle: HWND;
    FMinSize, FMaxSize: TSize;
    FCaption: String;
    // Messages:
    procedure WMCreate(var Msg: TMessage); message WM_CREATE;
    procedure WMDestroy(var Msg: TMessage); message WM_DESTROY;
    procedure WMGetMinMaxInfo(var Msg: TMessage); message WM_GETMINMAXINFO;
    procedure WMActivate(var Msg: TMessage); message WM_ACTIVATE;
    procedure WMPaint(var Msg: TMessage); message WM_PAINT;
    procedure WMShowWindow(var Msg: TMessage); message WM_SHOWWINDOW;
    procedure WMMove(var Msg: TMessage); message WM_MOVE;
    procedure WMSize(var Msg: TMessage); message WM_SIZE;
    // Input messages:
    procedure WMLButtonDown(var Msg: TMessage); message WM_LBUTTONDOWN;
    procedure WMLButtonUp(var Msg: TMessage); message WM_LBUTTONUP;
    procedure WMRButtonDown(var Msg: TMessage); message WM_RBUTTONDOWN;
    procedure WMRButtonUp(var Msg: TMessage); message WM_RBUTTONUP;
    procedure WMMButtonDown(var Msg: TMessage); message WM_MBUTTONDOWN;
    procedure WMMButtonUp(var Msg: TMessage); message WM_MBUTTONUP;
    procedure WMMouseMove(var Msg: TMessage); message WM_MOUSEMOVE;
    procedure WMMouseWheel(var Msg: TMessage); message WM_MOUSEWHEEL;
    procedure WMKeyDown(var Msg: TMessage); message WM_KEYDOWN;
    procedure WMKeyUp(var Msg: TMessage); message WM_KEYUP;
    procedure WMChar(var Msg: TMessage); message WM_CHAR;
    procedure WMSysKeyDown(var Msg: TMessage); message WM_SYSKEYDOWN;
    procedure WMSysKeyUp(var Msg: TMessage); message WM_SYSKEYUP;
    procedure WMSysChar(var Msg: TMessage); message WM_SYSCHAR;
  protected
    WindowClass: TWndClass; {!!!: static;}
    FWindowStyle, FWindowStyleEx: LongWord;   // values used for creation
    FMouseInWindow, FHasMouseCapture, FHasFocus: Boolean;
    function GetCaption: String;
    procedure SetCaption(const ATitle: String);
    procedure DoSetCursor; override;
    procedure UpdateWindowButtons;
    function DoMouseEnterLeaveCheck(const Msg: TMessage): Boolean;
  public
    constructor Create(AScreen: TGDIScreen; AParent: TGDIWindow;
      AWindowType: TGfxWindowType);
    destructor Destroy; override;
    procedure DefaultHandler(var Message); override;

    procedure SetPosition(const APosition: TPoint); override;
    procedure SetSize(const ASize: TSize); override;
    procedure SetMinMaxSize(const AMinSize, AMaxSize: TSize); override;
    procedure SetClientSize(const ASize: TSize); override;
    procedure SetMinMaxClientSize(const AMinSize, AMaxSize: TSize); override;
    procedure Show; override;
    procedure Invalidate(const ARect: TRect); override;
    procedure PaintInvalidRegion; override;
    procedure CaptureMouse; override;
    procedure ReleaseMouse; override;

    property Caption: String read GetCaption write SetCaption;
    property Handle: HWND read FHandle;
  end;
Im Anhang ist der Komplette Quelltext dazu. Da wird sonst zu groß hier!

Zitat von Daniel:
...Also komme bitte wieder zur Ruhe - es ist ja nichts passiert.
Ok. Aber ich war schon sauer. Zumal ich Eine Woche gebraucht habe, um die Units unter Freepascal übersetzt zu kriegen, dann noch mal ne Woche, um die Quellen für Delphi fit zu machen und dann muß ich mich noch rechtfertigen, wo ich das Zeug her habe. Ich habe inzwischen wirklich genug eigene Arbeit da reingesteckt!

Deine Mail hab ich auch erhalten! Hoffentlich kriegen die Webhoster das Problem der Verfügbarkeit dieser Seite bal wieder in den Griff

schöni

[edit=sakura] Zitat-Tags korrigiert. Mfg, sakura[/edit]
Angehängte Dateien
Dateityp: pas gfx_gdi_190.pas (43,3 KB, 19x aufgerufen)
Damit der Topf nicht explodiert, lässt man es ab und zu mal zischen.
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#9

Re: GetMessage Problem?

  Alt 23. Okt 2005, 16:56
Zitat von schöni:
Den Quelltext habe ich vom fpGui Projekt übernommen. Quelle -> Siehe vorhergehender Beitrag! Werde aber Deinen Hinweis beim Redesign, das möglicherweise ansteht, berücksichtigen.
Wußte ich ja vorher nich

Zitat von schöni:
Nein, es wird kein Fenster angezeigt!
Nein, die Frage ging darauf hinaus, ob du ein explizites ShowWindow() machst. Aber ShowWindow() wird - wenn es ein Kindfenster ist - vermutlich implizit aufgerufen.

Zitat von schöni:
Danke! Diesen Teil werde ich wohl deshalb überarbeiten müssen.
0 or 0 or 1 = 1

Zitat von schöni:
Eine Nachrichtenschleife pro Thread! Danke. Weiß ich erst jetzt.
Lies dich mal in Luckies Tutorials schlau. Es gibt leider zwar jede Menge Infos zu VCL-Programmierung und auch dem Ableiten vorhandener Klassen, aber wenig zu dem Teil der VCL-Programmierung der direkt auf der Win32-API aufsetzt, also quasi nonVCL-VCL-Programmierung

Zitat von schöni:
Ok. Aber ich war schon sauer. Zumal ich Eine Woche gebraucht habe, um die Units unter Freepascal übersetzt zu kriegen, dann noch mal ne Woche, um die Quellen für Delphi fit zu machen und dann muß ich mich noch rechtfertigen, wo ich das Zeug her habe. Ich habe inzwischen wirklich genug eigene Arbeit da reingesteckt!
Oben klang es schon ein wenig so, als wärest du mit dem Code nicht ganz firm. Aber nach dem was wir die Vorgeschichte nun kenne

Ich versuche es irgendwie dazwischenzuschieben und mir den Code mal anzuschauen. Wenn du bis Ende kommender Woche keine Antwort erhalten hast, dann PM an mich!

Gruß,
  Mit Zitat antworten Zitat
schöni

Registriert seit: 23. Jan 2005
Ort: Dresden
445 Beiträge
 
Delphi 7 Personal
 
#10

Re: GetMessage Problem?

  Alt 4. Nov 2005, 18:26
Hallo!

Ich bin mit dem genannten Problem immer noch nicht viel weiter. Außer:

Wenn ich die Widgettest.exe außerhalb der IDE starte, wird ein Fenster angezeigt. Ich kann es verschieben und dessen Größe ändern. Super!

Aber der Clientbereich wird nicht korrekt gezeichnet. Ich habe überlegt, ob ich nun alle Units der fpGUI hier hochlade, oder nur das, was zum Start der Widgettest.exe gebraucht wird. Ich habe mich für letzteres entschieden, obwohl fpGUI unter LGPL steht. Sollten also noch mehr Units zur Einsichtnahme gebraucht werden, lade ich die fpGUI insgesamt hier hoch, genauso als Anhang zum Beitrag.

Die Widgettest.exe startet also erst mal und zeigt ein Fenster an, das etwas hoöer ist, als die Titelleiste. Es läßt sich vergrößern und verschieben. Beim Vergrößern scheint der Hintergrund durch. Wenn ich danach verschiebe, wird der Hintergrund gezeichnet (Bildschirmfoto des Hintergrundes vor dem Verschieben). Wenn ich danach wieder vergrößere, scheint in dem hinzugekommenen Bereich der aktuelle Hintergrund durch, der beim nächsten Verschieben wie ein Bildschirmfoto mitgenommen wird.

Wie erreiche ich, das der Clientbereich korrekt gezeichnet wird. Die Zeichenfunktionen stecken alle in der Unit gfx_gdi.pas, die in einem früheren Beitrag dieses Threads als Anhang beigefügt wurde. Deshalb hier auch nur Widgettest in der folgenden .zip - Datei. Wenn Ihr doch die fpGUI insgesamt braucht, lasst es mich wissen, dann lade ich die noch hier hoch. Ist, wie schon gesagt LGPL.

Wer kann mir hier helfen. Auch mit Luckies WinAPI-Handbuch finde ich den Fehler nicht.

Gibt es eine Möglichkeit, eine Message abzuschicken, die dem Fenster sagt "Du bist schon verschoben worden, also zeichne den Hintergrund des Clientbereiches? Eine ebensolche Message müßte dann auch bei Größenänderung und Zoom abgeschickt werden.

es grüßt ein verzweifelter

schöni
Angehängte Dateien
Dateityp: zip widgettest_199.zip (123,3 KB, 9x aufgerufen)
Damit der Topf nicht explodiert, lässt man es ab und zu mal zischen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 10:51 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