Dynamisch viele HWND erzeugen
-
Hi all,
ich bin gerade Dabei eine Möglichkeit paratzustellen (im Grunde) unendlich viele HWNDs zu verwalten.
Erzeugt werden die HWNDs durch den Benutzer, FireFox-Tab like, mithilfe von CreateWindow.
Gespeichert wird dass ganze in einer einfach verketteten Liste:typedef struct _openTab{ HWND wnd; char title[256]; struct _openTab *next; } *pOpenTab, openTab;Somit kann ich per Titel an das HWND kommen und das Fenster bestimmen.
Ich mache das so:HWND tmp; tmp = CreateWindow( "RICHEDIT", "", WS_DLGFRAME | ES_AUTOHSCROLL | WS_HSCROLL | ES_NOHIDESEL | WS_CHILD | ES_MULTILINE, 15, 15, 390, 170, myAppWnd, (HMENU)m_wndTab, aktInst, NULL ); if( !GetLastError() ) { openTabAdd( tmp, name ); //in Liste eintragen } else { printf( "ES IST EIN FEHLER AUFGETRETEN: %d\n", GetLastError() ); MessageBox( NULL, "Es ist ein Fehler aufgetreten...\nDas Programm wird sicherheitshalber beendet!", "Fehlerhinweis:", MB_ICONHAND ); PostQuitMessage( GetLastError() ); }Bevor jemand fragt: bei lediglich einem Fenster geht alles, wenn ich nun ein zweites aufmachen will, kommt "Es ist ein Fehler..." und GetLastError == 5.
Jetzt versteh ich nicht, wieso ich EIN Fenster öffnen kann, beim ZWEITEN jedoch ein ACCESS DENIED bekomme?Muss ich was spezielles beachten?
-
Schon ok!
-
Zeig mal die Funktion openTabAdd()
-
Bin gerade dabei die nicht kommentierten Codeabschnitte, wo openTabAdd auch reinfällt, zu kommentieren, also geht es erstmal nicht.
Wieso willst du die sehen?
-
typedef struct _openTab{ HWND wnd; char title[256]; struct _openTab *next; } *pOpenTab, openTab;Hast du vielleicht vergessen, für den Zeiger *next genügend Speicher mit malloc() anzufordern ?
Ich nehme an 'name' ist der name und wird in 'char title[256]' gespeichert in der Funktion openTabAdd(), übergibst du den namen dann auch per Value oder Reference ?? Letzteres sollte man nicht tun, wenn man das überhaupt darf (was ich nicht glaube).
Was anderes fällt mir zu dem Code nicht ein.
-
Ich hatte schon geschrieben "schon ok"... damit meinte ich "geht alles" habe den fehler gefunden, was genau das war weiß ich nicht mehr

Danke trotzdem für diene Hilfe!
-
Dachte das war ironisch gemeint, weil niemand geholfen hat.
-
McLove schrieb:
Dachte das war ironisch gemeint, weil niemand geholfen hat.Das dneke ich mir im nachhinein auch (das die Formulierung falsch ist) aber wie gesagt: danke trotzdem.