AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Menu Ownerdraw

Ein Thema von EWeiss · begonnen am 7. Mär 2019 · letzter Beitrag vom 13. Mär 2019
Antwort Antwort
EWeiss
(Gast)

n/a Beiträge
 
#1

AW: Menu Ownerdraw

  Alt 7. Mär 2019, 12:32
Wo kommt denn der Wert für hToolbar in procedure TSkinOpenSaveDialog.ToolBarSubClassProc(var Message: TMessage); her?
Delphi-Quellcode:
  hToolbar := FindWindowEx(hMain, 0, 'ToolBarWindow32', nil);
  GetWindowRect(hToolbar, rc);
  lpt.x := rc.Left;
  lpt.y := rc.Top;
  ScreenToClient(hMain, lpt);

  MoveWindow(hToolbar, lpt.x, lpt.y, (rc.Right - rc.Left) + 3, rc.Bottom - rc.Top, false);

  ExStyle := GetWindowLongPtr(hToolbar, GWL_EXSTYLE);
  ExStyle := ExStyle or WS_EX_TRANSPARENT;
  SetWindowLongPtr(hToolbar, GWL_EXSTYLE, ExStyle);
  ToolBarSubClass(hToolbar);
hMain = Handle der Class #32700 Dialog Box

gruss

Geändert von EWeiss ( 7. Mär 2019 um 12:37 Uhr)
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.073 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Menu Ownerdraw

  Alt 7. Mär 2019, 12:54
Anbei mal ein Minimalbeispiel (ja, das geht in der Tat recht schnell) zum nachdebuggen in einer höheren Delphiversion, die schon VCL Styles unterstützt (z.B. die Delphi Community Editon).

Du kannst ja einfach mal nachvollziehen, wie in procedure TSysPopupStyleHook.WMPRINT(var Message: TMessage); der Hintergrund bei der Message WM_PRINT (791) gezeichnet wird.
Angehängte Dateien
Dateityp: zip PopupFromToolbar.zip (41,4 KB, 4x aufgerufen)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: Menu Ownerdraw

  Alt 7. Mär 2019, 13:31
Danke werde es mir anschauen..

gruss
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#4

AW: Menu Ownerdraw

  Alt 7. Mär 2019, 14:06
Report:
Ist einfach mit seiner Engine aber nicht auf meiner weise..
Ich kann nicht erkennen wo das Event ausgelöst wird.. bei mir sollte es eigentlich WM_LBUTTONDOWN sein.

Aber ich bekomme kein gültiges Handle.
Ich klicke ja auf den Tollbarbutton nur welches Handle ist das bekomme ja nur das von der Toolbar selbst zurück geliefert.
Nicht das des Button den ich klicke noch das vom Menu.

Wenn ich das auf seine weise mache schlägt es fehl.
Delphi-Quellcode:
    WM_LBUTTONDOWN:
      begin
        Style := GetWindowLongPtr(WinHandle, GWL_STYLE);
        if (Style and WS_POPUP = WS_POPUP) then
        begin
          if HToolBarMenu <> 0 then
            ToolBarSubClass(hToolbarMenu);
        end;
      end;
Hmmm schwierig..
PS:
Werde es wohl erst mal verwerfen komme nicht an das Handle.

gruss

Geändert von EWeiss ( 7. Mär 2019 um 15:13 Uhr)
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.073 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Menu Ownerdraw

  Alt 7. Mär 2019, 15:22
mach doch mal ein FindWindowEx auf den Klassennamen '#32768'.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#6

AW: Menu Ownerdraw

  Alt 7. Mär 2019, 15:43
mach doch mal ein FindWindowEx auf den Klassennamen '#32768'.
Habe ich schon versucht.. schlägt fehlt in der ToolBarProc.. WM_LBUTTONDOWN und WM_PRINT

Danke.
Werde es so lassen wie es ist. Kann man nichts machen ohne das ich jetzt fremden Quelltext verwende.

gruss

Geändert von EWeiss ( 7. Mär 2019 um 17:05 Uhr)
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.073 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Menu Ownerdraw

  Alt 7. Mär 2019, 18:44
Wahrscheinlich ist das Popupfenster nicht sofort da. Warte doch ein paar Millisekunden und suche dann.
Du könntest aber auch den Callstack im Beispiel hoch debuggen und Schritt für Schritt verstehen lernen, wie es da in Verbindung mit der Styleengine von Embarcadero gelöst wird.
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 20:39 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