HWnd ShowWindow() 메서드를 호출 할 때 애니메이션을 숨기는 방법을 알고 싶습니다. 여기 내 코드입니다 :HWND API : ShowWindow (...) 호출시 창 애니메이션을 해제하는 방법
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool ShowWindow(IntPtr hWnd, ShowWindowCommands nCmdShow);
public enum ShowWindowCommands
{
HIDE = 0,
SHOWNORMAL = 1,
SHOWMINIMIZED = 2,
MAXIMIZE = 3,
SHOWNOACTIVATE = 4,
SHOW = 5,
MINIMIZE = 6,
SHOWMINNOACTIVE = 7,
SHOWNA = 8,
RESTORE = 9,
SHOWDEFAULT = 10,
FORCEMINIMIZE = 11
}
public static void MinimizeWindow(IntPtr hWnd)
{
ShowWindow(hWnd, ShowWindowCommands.MINIMIZE);
}
문제는, 애니메이션이 실행하고, 애니메이션이 완료 될 때까지 방법은 반환하지 않습니다.
은 내가 DwmSetWindowAttribute() 방법을 사용하여 시도 :[DllImport("dwmapi.dll", PreserveSig = true)]
static extern int DwmSetWindowAttribute(IntPtr hWnd, uint attr, ref int attrValue, int size);
const uint DWM_TransitionsForceDisabled = 3;
public static void SetEnabled(IntPtr hWnd, bool enabled)
{
int attrVal = enabled ? 0 : 1;
DwmSetWindowAttribute(hWnd, DWM_TransitionsForceDisabled, ref attrVal, 4);
}
를하지만 애니메이션은 억제되지 않았다. 내 운영 체제는 Windows 7, 32 비트입니다.
'DwmSetWindowAttribute'의 반환 값을 확인하여 실패했는지 확인하십시오. –
@Jonathan Potter 반환 값은 0입니다. 즉, 작업 성공 –
http://stackoverflow.com/questions/6160118/disable-aero-peek-in-wpf-application에 대한 답변을 보면, 데이터 포인터가 잘못되었습니다. –