问题描述
我有两个问题。
我有一个应用程序,它在另一个桌面上显示一个全屏窗口。问题是当桌面切换到显示对话框时,新桌面背景会暂时显示,然后只显示全屏窗口。
I have an application which shows a full screen window in a different desktop. The issue is when the desktop is switched to show the dialog, the new desktop background is visible for a moment and then only the full screen window is showing.
问题1:
我的代码类似于下面的代码段。这是切换桌面的正确方法吗?
My code is similar to below code snippet. Is this correct way to switch desktop?
if( !::SetThreadDesktop(hNewDesk))
{
LogError( "SetThreadDesktop() failed" );
return;
}
if (!::SwitchDesktop(hNewDesk))
{
LogError( "SwitchDesktop() failed" );
return;
}
问题2:
我知道如何以不同的方式启动应用程序桌面使用CreateProcess()而不切换到那个桌面。我想在另一个桌面上创建一个窗口而不切换到那个桌面。例如桌面1和桌面2.我想在桌面2中从桌面创建完整的
屏幕窗口1,无需切换到桌面2,以便在调用SwitchDesktop()时桌面2中已显示该窗口。任何人都可以帮我这个吗?
I know how to start an application in a different desktop using CreateProcess() without switching to that Desktop.I wanted to create a Window in another desktop without switching to that desktop.For example Desktop 1 and Desktop 2. I wanted to create full screen window in Desktop 2 from Desktop 1 without switching to Desktop 2 so that the window is already visible in Desktop 2 when SwitchDesktop() is called. Could anyone help me in this?
谢谢,Renjith VR
Thanks, Renjith V R
推荐答案
您只能使用SwitchDesktop()来更改桌面。除非您希望当前线程使用切换桌面,否则无需调用SetThreadDesktop()。
You can use SwitchDesktop() only to change desktops. There is no need to call SetThreadDesktop() unless you want the current thread to use the switched desktop.
问题2:
我认为最简单答案是在目标桌面上启动一个应用程序,让该应用程序为您绘制窗口 代表你。我看到的唯一问题是你不知道这需要多长时间。
I think the easiest answer is to launch an application in the target desktop and let that application draw the window for you on your behalf. The only issue I see is that you won't know how long this will take.
如果你想使用当前桌面上的程序在目标桌面上绘制一个窗口,那么你在打开窗口或启动消息泵的任何调用之前,需要调用SetThreadDesktop()
。 Thi s
需要在您的计划中尽早完成。
If you want to draw a window in the target desktop using the program in the current desktop, then you do need to call SetThreadDesktop()before any call that opens a window or starts a message pump. Thisneeds to be done very early in your program.
我很好奇你是什么问题试图解决。你为什么一开始使用桌面?
I'm curious what problem you are trying to solve. Why are you using a desktop in the first place?
这篇关于在不同的桌面上显示一个窗口的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!