具有两个窗口的C++中的应用程序.任务栏中显示的一个窗口.另一个未显示

Application in C++ with two windows. One window shown in taskbar. The other not shown

本文关键字:窗口 显示 另一个 任务栏 一个 C++ 两个 应用程序      更新时间:2023-10-16

我在编码之前正在做一些分析,在寻找具有以下特征的应用程序的信息或实现时遇到了一些麻烦:

  1. 窗口 #1(显示在任务栏上)
  2. 窗口#
  3. 2(不显示在任务栏上,您可以将此窗口放在窗口#1后面,因此我们不是在谈论从窗口#1植根的弹出窗口/对话框)
  4. 窗口
  5. #1 和窗口 #2 都在同一个项目(或应用程序中,可以这么说)

同样,这只是概念上的讲话,所以如果你能指出我一些信息证明这是可能的,那就太好了。请注意,这是在C++而不是 C# 中。

我想出的最接近的是:

  1. 添加了从 CWnd 派生的类
  2. 类中添加了以下函数

    void Create2ndWindow(CWnd* pParent){

    LPCTSTR pszClassName = AfxRegisterWndClass(CS_VREDRAW |CS_HREDRAW, ::LoadCursor(NULL, IDC_ARROW), (HBRUSH) ::GetStockObject(WHITE_BRUSH), ::LoadIcon(NULL, IDI_APPLICATION));

    BOOL bCreated = CreateEx(WS_EX_CLIENTEDGE, 
        pszClassName, 
        _T("My Second Window"), 
        WS_BORDER|WS_CAPTION|WS_ACTIVECAPTION|WS_MAXIMIZEBOX|WS_MINIMIZEBOX|WS_POPUPWINDOW|WS_SIZEBOX, 
        CRect(20, 20, 100, 100), 
        pParent, 
        NULL);
    if(bCreated)
        ShowWindow(SW_SHOW);
    

    }

  3. 在 InitInstance 中,我添加了以下行:CSecondWindow* pWnd = new CSecondWindow();pWnd->Create2ndWindow(pFrame);

  4. 执行应用程序,桌面上会出现 2 个窗口,但您应该只看到一个任务栏按钮用于 pFrame 窗口,而没有用于 CSecondWindow 的按钮

如果 pParent 为 NULL,则会看到任务栏按钮。您可以添加另一种样式WS_EX_TOOLWINDOW但会降低标题栏的高度。