繁体   English   中英

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

[英]How to Stop C/C++ WINAPI Window Showing on all Desktops?

我正在编写一个 C/C++ windows 应用程序,它调用 CreateWindow 如下:

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;

WinMain:

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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM