Das Problem ist, dass man eigentlich den Aufruf von ShowWindow durch AnimateWindow ersetzen muss. Der Aufruf von ShowWindow steckt aber tief in den Eingeweiden der MFC, da kommt man nicht ran. Außerdem darf das Fenster nicht sichtbar sein, wenn man es mit Animation einblenden will. MFC-Dialoge sind aber immer zu Beginn sichtbar, daran kann man nur mit einem Trick etwas ändern.
Man fügt der Dialogklasse einen bool-Member hinzu, den man im Konstruktor auf false setzt. Dann erstellt man eine Nachrichtenbehandlungsfunktion für WM_WINDOWPOSCHANGING, die hießt dann CEgalDlg::OnWindowPosChanging.
Da drin entfernt man das Flag SWP_SHOWWINDOW aus lpwndpos->flags, falls der bool-Member nicht true ist, und ruft dann erst CDialog::OnWindowPosChanging auf.
In OnInitDialog erzeugt man dann einen möglichst kurzen Timer, und fügt dem Dialog eine Nachrichtenbehandlungsfunktion für WM_TIMER hinzu. In OnTimer stoppt man den Timer, setzt den bool-Member auf true und ruft AnimateWindow auf.