CascadeWindows
-
Hi,
ich habe folgendes Problem:
Ich habe eine dialogbasierte Anwendung, aus der heraus ich beliebig viele weitere Dialogfenster öffne wie folgt:
static int count=0; count++; CMyDialog *newdialog = 0; newdialog = new CMyDialog(); newdialog->m_nNumber.Format("%d", count); newdialog->Create(IDD_DIALOG1, this); newdialog->ShowWindow(SW_SHOW);
Jetzt möchte ich die Fenster automatisch "kaskadierend" (heisst das so?
) anordnen, d.h. die einzelnen Fenster sollen versetzt von links oben nach rechts unten auf dem Desktop erscheinen.
Ich habe es wie folgt versucht:
void CTestCascadeDlg::OnButtonGetHandles() { HWND mychild; EnumWindows(EnumChildProc, NULL); ::CascadeWindows(this->m_hWnd, NULL, NULL, maxind, handles); // ::CascadeWindows(NULL, NULL, NULL, maxind, handles); } BOOL CALLBACK CTestCascadeDlg::EnumChildProc(HWND hwnd, LPARAM lParam) { char tempstr[100], titel[100]; CString ptitel; static int ind = 0; ::GetWindowText(hwnd, titel, 100); ::GetClassName(hwnd, tempstr, 100); if (strcmp(titel, "Dialog") == 0) { if (FromHandle(hwnd)->GetParent() == NULL) { TRACE("No Parent found.. \n"); } else { TRACE("Parent found!\n"); FromHandle(hwnd)->GetParent()->GetWindowText(ptitel); } handles[ind++] = hwnd; maxind = ind; } return TRUE; }
Der Aufruf von CascadeWindows bewirkt in der vorliegenden Form gar nichts....
In der auskommentierten Form werden alle WIndows auf dem Desktop neu angeordnet, nicht nur die Dialogfenster.
Hat jemand ne gute Idee?
Gruss
yeti