![]() |
AW: Ordnung muss sein (LaunchBar)
Nein keine neue Version seit gestern aber Quelltext Inklusive.
Keine Fremdkomponente pngImage/Jpg oder der gleichen reine WIN32 API (mit kleinen Einschränkungen) unter Verwendung von GDIPlus. Meinen Quelltext der DLL SK_AERO gibt es NUR auf persönlicher Anfrage. Das Teil ist nicht geheim, aber habe einiges an Zeit dafür investiert. gruss |
AW: Ordnung muss sein (LaunchBar)
Der Absturz beim Rechtsklick bei Windows 10 kommt von dieser Zeile (uMain.pas Zeile 961):
Delphi-Quellcode:
Rect ist leider leer, deshalb funktioniert die Division durch Rect.Bottom nicht.
GDIP_DrawImageRectRectI(Graphics, ImgBack, ImgItemHeight, PDis.rcItem.Top,
Rect.Right - SideBarWidth, ImgItemHeight, 0, PDis.rcItem.Top * (Integer(imgH) div Rect.Bottom), imgW, (Integer(imgH) div Rect.Bottom) * ImgItemHeight, 2, nil, false, nil); Das liegt daran, dass WindowFromDC(PDis.HDC) 0 zurückliefert. Ohne die Zeile wird das Menü angezeigt, allerdings wird der aktuelle Eintrag nach dem Hovern nicht wieder zurückgesetzt, sprich nach einmal Drüberfahren sehen alle gehovert aus. |
AW: Ordnung muss sein (LaunchBar)
Zitat:
Was kann man da machen? Warum WindowFromDC jetzt 0 unter W10 zurück gibt ist mir schleierhaft. Habe den Source nochmal aktualisiert da auch in CreateShortCut ein Problem mit dem Free vorlag. vorher
Delphi-Quellcode:
constructor TShortCut.Create;
begin AddChildWindows(); CreateIcon := TCreateIcon.Create; end;
Delphi-Quellcode:
und jetzt
if Assigned(Sprites) then
begin if (Sprites.Count - 1) > ID_MAIN then begin for K := ID_FIRST to Sprites.Count - 1 do begin if Sprites[K].h_Bitmap <> 0 then begin DeleteObject(Sprites[K].h_Bitmap); Sprites[K].h_Bitmap := 0; end; end; Sprites.Free; AddChildWindows; end; end;
Delphi-Quellcode:
constructor TShortCut.Create;
begin CreateIcon := TCreateIcon.Create; end;
Delphi-Quellcode:
if Assigned(Sprites) then
begin Sprites.Free; AddChildWindows; end else AddChildWindows; Zitat:
Das Hintergrund Bitmap sorgt dafür das ein Invalidate auf das Menu ausgeführt wird. gruss |
AW: Ordnung muss sein (LaunchBar)
Zitat:
Wenn du Lust und zeit dafür hast.
Delphi-Quellcode:
Prop.hPopupMenu := FindWindow('#32768', nil);
Das Problem ist das die Handles von Menus dynamisch sind. Das Handle Prop.hPopupMenu
Delphi-Quellcode:
ist nicht das gleiche wie unter
WM_RBUTTONDOWN:
begin nObjectID := GetMouseMoveSpriteID(WinHandle, lpX, lpY); if nObjectID = 0 then begin Prop.hPopupMenu := CreatePopupMenu; // Bitmap Popupmenu if Prop.hPopupMenu <> 0 then begin
Delphi-Quellcode:
wäre es so dann brauchte ich es nicht neu zu initialisieren.
WM_DRAWITEM:
begin PDis := Pointer(lP); case PDis^.CtlType of ODT_MENU: begin //Prop.hPopupMenu := WindowFromDC(FromDC); Prop.hPopupMenu := FindWindow('#32768', nil); Txt := PWideChar(GetMenuTxt(PDis.ItemId, Img, ImgHover, SideBarImg)); Funktioniert unter W7 Das müsste auch unter W10 gehen. gruss |
AW: Ordnung muss sein (LaunchBar)
Ja, das funktioniert. :thumb:
Es gibt noch einen minimalen Grafikfehler, wenn man das erste Mal mit der Maus über das Menü geht (da sieht man verschobene Schrift), aber sonst funktioniert das Kontextmenü dann. |
AW: Ordnung muss sein (LaunchBar)
Zitat:
Sorry mit dem minimalen Grafikfehler kann ich leider nichts machen. (bitte nicht wieder diskutieren das ich es nicht will) Hier auf meinem System kann ich derartiges nicht ausmachen.. Ist einwandfrei. Hoffe mal das nicht zu viel arges im Code zu finden ist ;) gruss |
AW: Ordnung muss sein (LaunchBar)
Neue Version oben W10 Menu Handle Problem gefixt.
gruss |
AW: Ordnung muss sein (LaunchBar)
Liste der Anhänge anzeigen (Anzahl: 1)
... geiles Teil (wenn Ich das mal so sagen darf) ...
was mir aufgefallen ist : Die Menüeinträge erscheinen beim Überfahren mit der Mouse ein paar Pixel versetzt, allerdings nur beim ersten Überfahren, danach nicht mehr - siehe Anhang. Ich hab's jetzt nur unter W10 getestet, somit kann ich nicht sagen, ob es vielleicht ein W10-Problem ist . . . p.s. wenn ich richtig gezählt habe : in X + 3 Pixel in Y + 3 Pixel |
AW: Ordnung muss sein (LaunchBar)
Zitat:
Ich weiß nicht warum aber wenn du kannst könntest du herausfinden woran das liegt? Ich würde es gerne beheben aber ohne W10 keine Chance. Ich sehe aber das die ALLLE versetzt sind nicht nur 1. (W10 wohlbemerkt nicht bei mir) Erst das Problem mit dem DC und nun das ;) Ohne das ich über das Menu fahre sind alle Einträge (Schriften Zentriert) Siehe Anhang. Das Menu lässt sich sehr schwer Debuggen zumindest bei mir Mit D2010 Die IDE hängt sich auf wenn ich hier einen Breakpoint setze. gruss |
AW: Ordnung muss sein (LaunchBar)
Zitat:
anderen (bereits mit der Mouse überfahrenden Menüeinträge) sind dann nicht mehr versetzt. . . . vielleicht komme ich morgen mal dazu, mir das näher anzusehen . . . |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:46 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 by Thomas Breitkreuz