के बिना न्यूनतम विंडो को पुनर्स्थापित कैसे करें मैंने Vista के लिए एक एक्सपोज़-क्लोन बनाया है जिसे कभी-कभी कम से कम एक विंडो को पुनर्स्थापित करने की आवश्यकता होती है। मैंने इसे SetWindowPlacement फ़ंक्शन के साथ करने में कामयाब रहा है। समस्या यह है कि खिड़की अच्छी तरह से स्क्रीन में फिसल जाने के बाद यह खिड़की को पेंट करता है जो बकवास की तरह दिखता है।फ़्लिकर
इस कोड को मैं शीर्ष करने के लिए एक खिड़की लाने के लिए और देने के लिए इस्तेमाल करते हैं यह ध्यान केंद्रित:
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);
}
तो मैं एक खिड़की है कि पहले से ही बहाल है यह केवल SetForegroundWindow कॉल करेंगे और खिड़की मिल जाएगा पर इसका इस्तेमाल जेड ऑर्डर के शीर्ष पर और किसी भी झिलमिलाहट के बिना फोकस प्राप्त करें।
लेकिन अगर मैं इसे कम से कम विंडो पर कॉल करता हूं तो मुझे विंडो को पुनर्स्थापित स्थिति में वापस लाने के लिए SetWindowPlacement का भी उपयोग करना होगा। खिड़की को पुनर्निर्मित करने और झिलमिलाहट करने का यही कारण है:/
फ़्लिकर के बिना एक न्यूनतम विंडो को पुनर्स्थापित करने का एक तरीका होना चाहिए क्योंकि विंडो प्रबंधक में निर्मित यह करता है।