Ich mache es so..
Delphi-Quellcode:
function TSkinEngine.SetMenuAnimation(HWND: DWORD; MenuAnimation: BOOL): Boolean;
begin
// Bisherige Einstellung ermitteln:
result := SystemParametersInfo(SPI_GETMENUANIMATION, 0, @FOldSetting, 0);
if not result 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;
SPI_GETMENUANIMATION mit SPI_GETANIMATION ersetzen.. sollte funktionieren. (aber nicht getestet)
Ich habe die Funktion erstellt damit man bei OwnerDraw Menus das korrekte MenuHandle erhält.
Deaktiviert man die Animation vorher nicht dann ist das
Handle immer 0 bei dieser abfrage. (seltsamerweise nur unter Windows 10)
hMenuWnd := WindowFromDC(Pdis^.hDC);
gruss