MFC Fenster verschwindet beim wechsel zwischen virtuellen Desktops nicht



  • Hallo,
    ich habe das Problem, dass bestimmte Fenster beim wechsel zwischen virtuellen Desktops nicht verschwinden. Das Anwendungsfenster und Panes, verschinden aber die Frames mit folgender erstellung nicht.

    DWORD dwStyle = WS_OVERLAPPED | WS_THICKFRAME | WS_CAPTION | WS_SYSMENU | WS_MAXIMIZEBOX | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN;
    DWORD dwStyleEx = WS_EX_TOOLWINDOW | WS_EX_RIGHTSCROLLBAR;
    

    Kennt jemand das Problem und die Lösung dazu?
    Thx
    Christian



  • Hab es selbst doch noch gefunden. Hier für alle die das vielleicht auch mal haben:
    Das erzeugte Fenster sollte nicht in der Taskbar auftauchen. Das kann man mit WS_EX_TOOLWINDOW auch erreichen, hat aber eben den Hasenfuß, dass es in allen virtuellen Desktops sichtbar bleibt. Daher darf WS_EX_TOOLWINDOW nicht verwendet werden.
    Damit das Fenster trotzdem nicht in der Taskbar auftaucht, muss ein owner gesetzt werden.

    Also:

    DWORD dwStyle = WS_OVERLAPPED | WS_THICKFRAME | WS_CAPTION | WS_SYSMENU | WS_MAXIMIZEBOX | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN;
    DWORD dwStyleEx = /*WS_EX_TOOLWINDOW |*/ WS_EX_RIGHTSCROLLBAR;
    UINT nId = 0;
    
    if (pFrame->CreateEx(dwStyleEx, NULL, pszFrameTitle, dwStyle, rect, pParent, nId, NULL) == FALSE) {
    	return NULL;
    }
    pFrame->SetOwner(AfxGetApp()->GetMainWnd());

Log in to reply