Masalah pesanan Z aplikasi jendela layar penuh

Dalam pengaturan multi-monitor dengan tampilan yang diperluas, aplikasi windows mencakup layar penuh dalam satu monitor. Saya ingin menghadirkan aplikasi lain di atas aplikasi pertama dengan mengeklik ikon bilah tugas aplikasi tersebut di monitor sekunder. Namun saya tidak dapat menghadirkan aplikasi lain di atas aplikasi pertama. Ketika saya mengeklik ikon bilah tugas aplikasi pertama di monitor sekunder, saya dapat menempatkan aplikasi lain di atasnya. Properti jendela aplikasi pertama apa yang mungkin menyebabkan perilaku ini

Saya harus bisa membawa aplikasi lain selain aplikasi pertama


person scx    schedule 26.10.2019    source sumber
comment
Saya tidak dapat membawa aplikasi lain selain aplikasi pertama. Tampaknya jendela tersebut menggunakan HWND_TOPMOST saat layar penuh. Namun kata-katanya:Saat saya mengeklik ikon bilah tugas aplikasi pertama di monitor sekunder, saya dapat membawa aplikasi lain ke atas. Maksud Anda, hanya jika Anda berfokus pada jendela pertama, Anda dapat untuk membawa jendela lain di atas?   -  person Drake Wu    schedule 28.10.2019
comment
@ DrakeWu-MSFT Ya, Anda benar jika saya fokus pada jendela pertama, saya dapat membawa jendela lain di atas   -  person scx    schedule 28.10.2019
comment
1. Apa aplikasi pertama dan apakah Anda yang mengembangkannya? 2. Jika ya, berikan contoh Minimal, Reproducible yang dapat mereproduksi masalah dan membantu orang menemukan dan memecahkan masalah tersebut untukmu.   -  person Drake Wu    schedule 28.10.2019
comment
Itu tergantung pada bagaimana jendela diprogram. Saya cukup menggunakan metode berikut untuk mereproduksi masalah serupa. 1.membuat aplikasi desktop. 2. SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW); ketika menerima SIZE_MAXIMIZED atau pesan layar penuh apa pun dari WM_SIZE. 3. SetWindowPos(hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW); saat mendapat pesan fokus WM_SETFOCUS.   -  person Drake Wu    schedule 28.10.2019
comment
@ DrakeWu-MSFT Apakah Anda dapat membuat ulang dengan langkah-langkah di atas?   -  person scx    schedule 28.10.2019
comment
Saya dapat mereproduksi masalah tersebut setelah layar maksimal atau layar penuh, mengatur gaya jendela ke paling atas, dan kemudian mengatur non-topmost saat mendapatkan pesan fokus. Fenomenanya adalah: ketika layar dimaksimalkan atau penuh, jendela tidak dapat ditutupi oleh jendela lain yang bukan paling atas. Saat mengklik ikon taskbarnya, jendela lain dapat menutupinya.   -  person Drake Wu    schedule 28.10.2019
comment
@ DrakeWu-MSFT Saya akan memeriksanya, terima kasih   -  person scx    schedule 28.10.2019
comment
Adakah peningkatan? mohon jangan ragu untuk memberikan informasi yang saya sebutkan sebelumnya agar kami dapat membantu Anda dengan lebih baik.   -  person Drake Wu    schedule 30.10.2019
comment
@ DrakeWu-MSFT Terima kasih telah menindaklanjuti, apakah ada alat yang dapat saya gunakan sehingga saya tahu mengapa aplikasi tertinggal (kehilangan fokus), saya tahu tentang Spy++ tetapi hanya dapat digunakan dengan Visual Studio   -  person scx    schedule 30.10.2019
comment
Sepertinya ada sesuatu yang berguna di sini. stackoverflow .com/questions/1811019/   -  person Drake Wu    schedule 30.10.2019
comment
@ DrakeWu-MSFT Saya cukup menggunakan metode berikut untuk mereproduksi masalah serupa. 1.membuat aplikasi desktop. 2. SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW); ketika menerima SIZE_MAXIMIZED atau pesan layar penuh apa pun dari WM_SIZE. 3. SetWindowPos(hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW); ketika mendapat pesan fokus WM_SETFOCUS Apakah ini solusi atau cara untuk membuat ulang masalah?   -  person scx    schedule 31.10.2019
comment
Ya, ini adalah cara yang mungkin untuk mereproduksi masalah tersebut. Untuk kasus ini, solusinya adalah menggunakan SetWindowPos , dan gunakan hWndInsertAfter yang Anda inginkan dengan benar (misalnya, selalu atur HWND_NOTOPMOST agar jendela dapat ditutupi oleh jendela lain)   -  person Drake Wu    schedule 01.11.2019
comment
Saya telah mencoba mengganti HWND_TOPMOST dengan HWND_NOTOPMOST tetapi tidak berhasil   -  person scx    schedule 01.11.2019
comment
@ DrakeWu-MSFT Saya sudah berkomentar di atas   -  person scx    schedule 02.11.2019
comment
Bisakah Anda memberikan sampel Minimal, Dapat Direproduksi?   -  person Drake Wu    schedule 04.11.2019
comment
@ DrakeWu-MSFT Maaf ada banyak proses dan banyak jendela, Berbagi sampel yang dapat direproduksi akan sulit. Saya telah mencoba mengganti HWND_TOPMOST dengan HWND_NOTOPMOST dan juga mengomentari panggilan SETForegroundWindow. Ada lagi yang bisa diperiksa?   -  person scx    schedule 04.11.2019
comment
Bisakah saya mengetahui siapa yang memberi suara negatif? Jika diberi suara negatif, bisakah Anda mengomentarinya   -  person scx    schedule 04.11.2019
comment
Apakah Anda melakukannya di sesi yang sama? Bisakah Anda memberikan beberapa cuplikan kode yang terkait dengan pemrosesan pesan jendela?   -  person Drake Wu    schedule 04.11.2019
comment
@ DrakeWu-MSFT Saya akan mengambil kembali pesan Windows, apakah Anda ingin saya melihat sesuatu secara khusus   -  person scx    schedule 05.11.2019
comment
Bisakah Anda memeriksa apakah jendela tersebut memiliki gaya jendela Ex WS_EX_TOPMOST dengan ini metode setelah layar penuh itu? Dan pertanyaan lainnya, apakah ini jendela UWP atau jendela Desktop? karena SetWindowPos hanya tersedia untuk aplikasi desktop.   -  person Drake Wu    schedule 06.11.2019
comment
@ DrakeWu-MSFT Ini adalah aplikasi desktop   -  person scx    schedule 06.11.2019
comment
Apakah jendela tersebut memiliki gaya jendela Ex WS_EX_TOPMOST?   -  person Drake Wu    schedule 07.11.2019
comment
@ DrakeWu-MSFT Saya akan memeriksanya dalam dua hari dan memberi tahu Anda   -  person scx    schedule 07.11.2019
comment
@ DrakeWu-MSFT Properti yang diperiksa melalui Spy++ adalah: Gaya Jendela: WS_CHILDWINDOW,WS_VISIBLE,WS_DISABLED,WS_CLIPSIBLINGS dan WS_CLIPCHILDRE   -  person scx    schedule 11.11.2019
comment
@DrakeWu-MSFT Gaya WIndows yang Diperluas adalah: WS_EX_LEFT,WS_EX_LTTRREADING,WS_EX_NOPARENTNOTIFY,WS_EX_RIGHTSCROLLBAR   -  person scx    schedule 11.11.2019
comment
Ini adalah jendela anak. Jika jendela induknya mempunyai gaya paling atas, maka jendela anak juga paling atas   -  person Drake Wu    schedule 13.11.2019