WPF主窗體調用 User32的SetWindowPos 設置窗體置高峰會導致與其他窗體搶奪焦點的問題
最近發現:自己開發的窗體應用,在二級彈窗或者提示框彈出的時候,交替點擊窗體和窗體外(相當於窗體交替的獲取焦點和失去焦點),都會導致其他的應用一閃一閃的。
經過排查,是由於該窗體由於部分因素考慮,用了 SetWindowPos 來替代 Topmost用於主窗體的置頂
[DllImport("user32.dll", SetLastError = true)] public static extern bool SetWindowPos(IntPtr hwnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);
去除掉調用改user32的SetWindowPos ,修改回來用Topmost置頂窗體,恢復正常。
總結:對於一些常用的設置,用WPF自帶的屬性盡量用自帶的屬性。對於一些User32或者一些非安全程式碼,定位問題,需要花費很大的時間