Tôi đã tạo một bản sao phơi sáng cho Vista mà đôi khi cần khôi phục cửa sổ thu nhỏ. Tôi đã thực hiện việc này bằng chức năng SetWindowPlacement. Vấn đề là điều này cũng sơn lại cửa sổ trông giống như crap sau khi cửa sổ độc đáo đã trượt vào màn hình.Cách khôi phục cửa sổ thu nhỏ mà không nhấp nháy
Đây là mã tôi sử dụng để mang lại một cửa sổ để phía trên và cung cấp cho nó tập trung:
private static void ActivateWindow(IntPtr windowToShow)
{
RectAPI r = new RectAPI();
Win32.GetWindowRect(windowToShow, ref r);
if (r.top == -32000) //r.top is -32000 if the window is in minimized state
{
WINDOWPLACEMENT wp = new WINDOWPLACEMENT();
Win32.GetWindowPlacement(windowToShow, ref wp);
if (wp.flags == WindowPlacementFlags.WPF_RESTORETOMAXIMIZED)
wp.showCmd = cmdShow.SW_SHOWMAXIMIZED;
else
wp.showCmd = cmdShow.SW_RESTORE;
Win32.SetWindowPlacement(windowToShow, ref wp);
}
Win32.SetForegroundWindow(windowToShow);
}
Nếu tôi sử dụng nó trên một cửa sổ đã được khôi phục lại nó sẽ chỉ gọi SetForegroundWindow và cửa sổ sẽ nhận được lên đầu đơn đặt hàng z và lấy nét mà không bị nhấp nháy.
Nhưng nếu tôi gọi nó trên cửa sổ thu nhỏ, tôi cũng phải sử dụng SetWindowPlacement để đưa trở lại cửa sổ về trạng thái được khôi phục. Đây là những gì làm cho cửa sổ để sơn lại và nhấp nháy:/
Phải có cách khôi phục cửa sổ thu nhỏ mà không bị nhấp nháy vì trình quản lý cửa sổ được tích hợp thực hiện việc này.