21xrx.com
2024-12-22 21:13:02 Sunday
登录
文章检索 我的文章 写文章
如何让用C++创建的窗口不在任务栏中显示?
2023-07-07 12:40:06 深夜i     --     --
C++ 窗口 任务栏 显示 隐藏

在使用C++编写程序时,有时候会需要创建一个窗口,但是又不希望这个窗口出现在任务栏中,例如在创作一些独立于主程序的弹窗提示时,此时需要将窗口隐藏于任务栏之外。今天,我们将介绍如何让用C++创建的窗口不在任务栏中显示。

我们可以通过在创建窗口时,将窗口类中的style属性设置为WS_EX_TOOLWINDOW,来使窗口不在任务栏中显示。下面是代码示例:


#include <Windows.h>

LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)

{

  // 注册窗口类

  WNDCLASSEX windowClass = { 0 };

  windowClass.cbSize = sizeof(WNDCLASSEX);

  windowClass.style = CS_HREDRAW | CS_VREDRAW;

  windowClass.lpfnWndProc = WindowProc;

  windowClass.hInstance = hInstance;

  windowClass.hCursor = LoadCursor(NULL, IDC_ARROW);

  windowClass.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);

  windowClass.lpszClassName = "NotInTaskbarWindow";

  RegisterClassEx(&windowClass);

  // 创建窗口

  HWND hwnd = CreateWindowEx(WS_EX_TOOLWINDOW, "NotInTaskbarWindow", "Not In Taskbar Window", WS_OVERLAPPEDWINDOW, 0, 0, 400, 300, NULL, NULL, hInstance, NULL);

  ShowWindow(hwnd, nCmdShow);

  MSG msg = { 0 };

  while (GetMessage(&msg, NULL, 0, 0))

  {

    TranslateMessage(&msg);

    DispatchMessage(&msg);

  }

  return (int)msg.wParam;

}

LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)

{

  switch (uMsg)

  {

  case WM_DESTROY:

    PostQuitMessage(0);

    return 0;

  }

  return DefWindowProc(hwnd, uMsg, wParam, lParam);

}

在上面的代码中,我们创建了一个名为"NotInTaskbarWindow"的窗口,并将窗口的style设置为WS_EX_TOOLWINDOW,这样就能够将窗口隐藏于任务栏之外。

总的来说,要让用C++创建的窗口不在任务栏中显示很简单,只需要在创建窗口时将窗口的style属性设置为WS_EX_TOOLWINDOW就可以了。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复