2 Windows in PreCreateWindow() erzeugen?!

Ravebaby

Erfahrenes Mitglied
Ich erzeuge in der PreCreateWindow() ein Fenster, das als Zeile oben am Bildschirmrand erscheint. Nun möchte ich noch eine Spalte links am Bildschirmrand erzeugen.
Der Code für die Zeile schaut folgendermaßen aus:
Code:
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
                if( !CFrameWnd::PreCreateWindow(cs) )
		return FALSE;

	cs.style = WS_POPUP;
	cs.dwExStyle = WS_EX_LAYERED;
	cs.lpszClass = AfxRegisterWndClass(0);
	int pixX = GetDeviceCaps(GetDesktopWindow()->GetDC()->m_hDC, HORZRES); 
	cs.cx = pixX;
	cs.cy = 50;
	cs.hMenu = NULL;

	return TRUE;
}

in dieser Form hat es auch geklappt. Möchte ich nun jedoch ein weiteres Fenster darin erzeugen, wird das erste einfach überschrieben und nicht mehr angezeigt:
Code:
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
	if( !CFrameWnd::PreCreateWindow(cs) )
		return FALSE;
	// TODO: Ändern Sie hier die Fensterklasse oder die Darstellung, indem Sie
	//  CREATESTRUCT cs modifizieren.

	cs.style = WS_POPUP;
	cs.dwExStyle = WS_EX_LAYERED;
	cs.lpszClass = AfxRegisterWndClass(0);
	int pixX = GetDeviceCaps(GetDesktopWindow()->GetDC()->m_hDC, HORZRES); 
	cs.cx = pixX;
	cs.cy = 50;
	cs.hMenu = NULL;

	cs.style = WS_POPUP;
	cs.dwExStyle = WS_EX_LAYERED;
	cs.lpszClass = AfxRegisterWndClass(0);
	int pixY = GetDeviceCaps(GetDesktopWindow()->GetDC()->m_hDC, VERTRES); 
	cs.cx = 50;
	cs.cy = pixY;
	cs.hMenu = NULL;

	return TRUE;
}

Gibt es eine möglichkeit, dennoch 2 Fenster zu erzeugen, die auch beide angezeigt werden?
 
Das das nicht geht ist klar, da die cs-Struktur ja erst ausgewertet wird, wenn die Funktion zurückkehrt. Gültig ist also immer das, was Du als letztes reinschreibst, da dann alles andere überschrieben wird. Die Struktur enthält nur die Daten für das Fenster, zu dem die PreCreateWindow-Funktion gehört. Das Schreiben in die Struktur selber bewirkt noch gar nichts.
Um ein neues Fenster zu erzeugen, mußt Du wahrscheinlich mit CreateWindow oder CreateWindowEx selber ein weiteres Fenster erzeugen. Du solltest Dir eine Fensterklasse für Dein linkes Fenster schreiben und dann eine Instanz davon mit einer der Create-Funktionen erzeugen.
 
Zurück