Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#132

AW: Ordnung muss sein (LaunchBar)

  Alt 13. Aug 2018, 18:59
Der Absturz beim Rechtsklick bei Windows 10 kommt von dieser Zeile (uMain.pas Zeile 961):
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.
Für die Leute die es interessiert warum die Menu Einträge verschoben und WindowFromDC 0 zurück liefert.
Es liegt definitiv an Windows. (Windows 7 und Up)

WindowFromDC liefert dann 0 zurück wenn Menu Animationen eingeschaltet sind.. das ist fakt.
Meine Lösung dazu ist bei OwnerDraw Menus diese Temporär auszuschalten wenn sie aktiv sind.

Delphi-Quellcode:
function TSkinEngine.SetMenuAnimation(MenuAnimation: BOOL): Boolean;
begin

  // Bisherige Einstellung ermitteln:
  result := SystemParametersInfo(SPI_GETMENUANIMATION, 0, @FOldSetting, 0);
  if result = false then
    // Result := False;
    // Der abfragende Aufruf war nicht erfolgreich
    exit; // Rückgabewert bleibt False

    // Wert ändern und Erfolg prüfen:
  if Bool(FOldSetting) <> MenuAnimation then
    result := SystemParametersInfo(SPI_SETMENUANIMATION, 0, Pointer(Ord(MenuAnimation)),
      SPIF_SENDCHANGE);
end;
gruss

Geändert von EWeiss (14. Aug 2018 um 02:43 Uhr)
  Mit Zitat antworten Zitat