gpt4 book ai didi

c++ - 如何停止在所有桌面上显示 C/C++ WINAPI 窗口?

转载 作者:行者123 更新时间:2023-12-02 10:39:17 24 4
gpt4 key购买 nike

我正在编写一个调用 CreateWindow 的 C/C++ windows 应用程序,如下所示:
HWND hWnd = CreateWindow(pszClassName, title_.c_str(), WS_OVERLAPPED | WS_VISIBLE | WS_POPUP | WS_SIZEBOX, 50, 50, 400, 100, NULL, NULL, hInst, this);
没什么特别复杂的,但是,当我使用 CTRL-WIN < 或 > 从一个桌面切换到另一个桌面时,它会出现在我计算机上的每个桌面上。

您如何使您在应用程序中创建的窗口仅保留在您创建它的桌面上?

我正在 64 位编译这个应用程序并在 Windows 10 上运行它。

最佳答案

代码:

全局的:

 WNDCLASSEX wc;

窗口程序:
case WM_KEYDOWN:
if(wParam == VK_F11)
{
wc.style = HWND_DESKTOP;//The window is child
//of desktop
}

break;

赢主:
LPCSTR windowName = "Answer on StackOwerflow";
MSG messages;

wc.cbSize = sizeof(WNDCLASSEX);
wc.style = 0;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wc.lpszMenuName = NULL;
wc.lpszClassName = "The classname";
wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);


hWnd = CreateWindowEx(
WS_EX_CLIENTEDGE,
wc.lpszClassName,
windowName,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, 240, 120,
NULL, NULL, hInstance, NULL);

ShowWindow(hWnd);
UpdateWindow(hWnd);


while(GetMessage(&messages, NULL, 0, 0) > 0)
{
TranslateMessage(&messages);
DispatchMessage(&messages);
}

return 0;

关于c++ - 如何停止在所有桌面上显示 C/C++ WINAPI 窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51991920/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com