Wie zur Hölle macht man ein neues Fenster auf
-
Ich kriegst einfach nicht hin

Kannst du vielleicht mal Quellcode zeigen (wenns nicht zu lange dauert).
Ist es wichtig, wie die zweite WinPrc heist?
-
nein, du musst es nur eben entsprechend bei der 2. Fensterklasse in lpfnWndProc angeben. Also eigentlich nur lpszClassName und lpfnWndProc ändern und nochmal RegisterClassEx aufrufen

-
bsp (schnell zusammenkopiert und ungetestet müsst aber gehen
)wincl.hInstance = hThisInstance; wincl.lpszClassName = TEXT("MainWndClass"); wincl.lpfnWndProc = WindowProc; wincl.style = CS_HREDRAW | CS_VREDRAW; wincl.cbSize = sizeof(WNDCLASSEX); wincl.hIcon = LoadIcon(hThisInstance, MAKEINTRESOURCE(IDI_MAIN)); wincl.hIconSm = LoadIcon(hThisInstance, MAKEINTRESOURCE(IDI_MAIN)); wincl.hCursor = LoadCursor(NULL, IDC_ARROW); wincl.lpszMenuName = "MAINMENU"; wincl.cbClsExtra = 0; wincl.cbWndExtra = 0; wincl.hbrBackground = (HBRUSH)(COLOR_WINDOW); if(!RegisterClassEx(&wincl)) return -1; wincl.hInstance = hThisInstance; wincl.lpszClassName = TEXT("ClientWndClass"); wincl.lpfnWndProc = ClientWindowProc; wincl.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC; wincl.cbSize = sizeof(WNDCLASSEX); wincl.hIcon = NULL; wincl.hIconSm = NULL; wincl.hCursor = LoadCursor(NULL, IDC_CROSS); wincl.lpszMenuName = NULL; wincl.cbClsExtra = 0; wincl.cbWndExtra = 0; wincl.hbrBackground = (HBRUSH)(COLOR_WINDOW); if(!RegisterClassEx(&wincl)) return -1; if(!(hwnd = CreateWindowEx( WS_EX_APPWINDOW, TEXT("MainWndClass"), TEXT("Title"), WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN |WS_VISIBLE, 25, 25, GetSystemMetrics(SM_CXSCREEN) - 50, GetSystemMetrics(SM_CYSCREEN) - 100, HWND_DESKTOP, NULL, hThisInstance, NULL))) { MessageBox( NULL, "Couldn't create Mainwindow", "Error", MB_OK | MB_ICONEXCLAMATION); return -1; } //... zweites fenster erstellen if(!(hwndClient = CreateWindowEx( WS_EX_CLIENTEDGE, TEXT("ClientWndClass") "", WS_CHILD | WS_VISIBLE, 0, 0, 200, 200, hwnd, (HMENU)IDC_IRGENDWAS, hThisInstance, NULL))) { MessageBox( NULL, "Couldn't create Clientwindow", "Error", MB_OK | MB_ICONEXCLAMATION); return -1; } // .. und weiter geht's
-
kannst du mir sagen warum er hier rummeckert? is alles so wie beim hauptwindow
-
nero-ex schrieb:
kannst du mir sagen warum er hier rummeckert? is alles so wie beim hauptwindow
connection refused

kopier die letzten zeilen vom compilier log
-
Kann das Bild nicht öffnen - poste doch bitte direkt den Fehler in Text-Form
-
sry, hats auf meinem notebook und bin dann off

hier jetzt funktionierender link:
-
nero-ex schrieb:
hier jetzt funktionierender link:
von wegen
-
ich gebs ja zu, ich bin irgendwie .... nicht so schlau

hab picture klein geschrieben (reine gewonheitssache )
-
du hast ein komma nach TEXT("ClientWndClass") vergessen. (ich übrigens auch
)
-
super, danke, das klappt schon mal. Wie bekommen ich es jetzt auch mit border und so? hab WS_OVERLAPPEDWINDOW angehängt, aber da konnte es nicht erstellt werden???
-
nero-ex schrieb:
Wie bekommen ich es jetzt auch mit border und so? hab WS_OVERLAPPEDWINDOW angehängt, aber da konnte es nicht erstellt werden???
Rahmen für was - es wäre besser du würdest immer die entsprechenden Textstellen posten und nicht nur einen Screenshot verlinken

-
nero-ex schrieb:
super, danke, das klappt schon mal. Wie bekommen ich es jetzt auch mit border und so? hab WS_OVERLAPPEDWINDOW angehängt, aber da konnte es nicht erstellt werden???
flenders schrieb:
Rahmen für was - es wäre besser du würdest immer die entsprechenden Textstellen posten und nicht nur einen Screenshot verlinken

mein reden

-
Das ist alles sehr komisch. Ich kann das Fenster nicht verschieben, es ist immer in der linken Ecke und der Cursor ändert sich in ein kreuz über dem Fenster.
-
nero-ex schrieb:
Das ist alles sehr komisch. Ich kann das Fenster nicht verschieben, es ist immer in der linken Ecke
also nochmal, probier einfach ein paar styles aus.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/WindowsUserInterface/Windowing/windows/WindowReference/WindowStyles.aspnero-ex schrieb:
der Cursor ändert sich in ein kreuz über dem Fenster.
wincl.hCursor = LoadCursor(NULL, IDC_CROSS);

-
OK, ich habs. Danke!
Nun noch eine letzte Fage

Wie würdet ihr es machen, wenn ihr das eine Fenster nur zu einer bestimmen Zeit mal kurz sichtbar machen wollt? Einfach die ganze Zeit das Fenster unsichtbar machen oder CreateWindow an einem späteren Zeitpunkt aufrufen?
Und wie schließ ich dann das Fenster wieder?
-
nero-ex schrieb:
Wie würdet ihr es machen, wenn ihr das eine Fenster nur zu einer bestimmen Zeit mal kurz sichtbar machen wollt? Einfach die ganze Zeit das Fenster unsichtbar machen oder CreateWindow an einem späteren Zeitpunkt aufrufen?
Wozu solltest du es erzeugen, bevor du es brauchst - also ich würde zumindest erst dann CreateWindow aufrufen, wenn ich das Fenster haben will.
nero-ex schrieb:
Und wie schließ ich dann das Fenster wieder?
DestroyWindow oder evtl. CloseWindow

-
Aber wie soll ich das Fenster aus der WinProc öffnen? die ganzen Vatriablen sind ja nur in der main definiert. Soll ich sie global machen?
-
nero-ex schrieb:
Aber wie soll ich das Fenster aus der WinProc öffnen? die ganzen Vatriablen sind ja nur in der main definiert. Soll ich sie global machen?
Was für Variablen
Du kannst ja z.B. deine Fensterklasse schon in WinMain registrieren, in deiner WndProc des anderen Fensters kannst du dann einfach unter Angabe des zweiten Fensterklassen-Namens das zweite Fenster öffnen 
-
ok, soweit hab ichs. er hat zwar dann rumgemeckert, er kenne hwnd nicht, aber ich habs global gemacht. Das einzige Problem, das noch besteht ist, dass obwohl ich 2 WinProcs habe das Programm beendet wird, klicke ich bei dem ChildWindow auf das rote schließenkreuz. weist du wie ich das vermeiden kann???