Du möchtest also für jedes Verzeichnis ein neues Fenster öffnen? Und es soll unabhängig vom vorherigen Fenster sein?
Möglicherweise gibt es bessere Lösungen, aber da würde ich eine Dialogbasierte Anwendung nehmen. Der Dialog enthält dann das CListCtrl und hat eine Membervariable, welche den Pfad enthält. die muß vor dem Starten des Dialogs initialisiert werden. Ist sie das nicht, dann kann man annehmen, daß die oberste Verzeichnisebene eingelesen werden soll. Im InitDialog liest Du dann mit FindFile und FindNextFile die Dateien und Verzeichnisse aus dem angegebenen Verzeichnis aus und stellst sie als Item im CListCtrl dar(InsertItem(...)). Im lParam des Items kannst Du ja ein flag ablegen, das Dir anzeigt, ob es ein Directory ist oder nicht. Wenn dann der Mauszeiger auf einem Verzeichnis ist (SubItemHitTest(...)), dann erzeugst Du eine Neue Instanz des Dialogs und startest sie. Wie man mit CListCtrl arbeitet, kannst Du im MSDN nachlesen, das ist zu umfangreich, um es hier zu wiederholen.
Wenn Du es nicht mit Dialogen machen willst, dann sollte das so ähnlich auch in einer SDI-Anwendung mit CDirListCtrl::Create(...) gehen, wobei CDirListCtrl eine von Dir von CListCtrl abgeletete Kalsse sein soll. Du mußt dich da halt selber um die ganze Erzeugung kümmern. die Initialisierung der Liste kannst Du im OnCreate(...) machen.
So könnte es gehen, es fehlen nur noch die Pointer, nach denen Du am Anfang dieses Threads gefragt hast. Wo bekommst Du die her und was für Pointer sind das? Ich hatte das mit CPtrList vorgeschlagen, da ich nicht wußte, auf was Du hinauswillst. Die Pointer haben mich etwas verwirrt, da man im Allgemeinen Pointer nicht sinnvoll in einer Liste darstellen kann (man kann schon, aber es wird wohl keinem was sagen), man kann sie aber sinnvoll in einer Liste speichern und verwalten.