MessageBox Position

Thomasio

Erfahrenes Mitglied
Ich habe ein Fenster mit ein paar child´s, edit controls und Buttons.
Nun möchte ich gerne in bestimmten Fällen, z.B. wenn ein Button geklickt wird eine MessageBox() anzeigen lassen.
Das ist soweit kein Problem, nur dass die MessageBox immer in der Mitte vom Bildschirm auftaucht.
Wie bringe ich der MessageBox() bei, dass sie stattdessen zentriert im parent vom Button auftauchen soll?
Laut MSDN ist der erste Wert in der MessageBox() das hwnd vom owner, aber auf die Position scheint das keinen Einfluss zu haben.
 
Ich würdemal stark vermuten das du die Position so wie auch beideinem Hauptfenster
bestimmen kannst. Die MessageBox ist auchnichts anderes alsein Fenster.
 
Hallo Thomasio,

ja, die MessageBox läßt sich vom Owner nicht beeindrucken und positioniert sich stur in die Mitte vom Desktop :-)
Eine richtige Lösung kenne ich dafür nicht, allenfalls einen schmutzigen Trick: Mit "FindWindow()" das Fenster-Handle der gerade erzeugten Box holen und diese dann mit "SetWindowsPos()" verschieben.

Gruß
MCoder
 
Bei einem Hauptfenster bestimmt ich dessen Position innerhalb von CreateWindow().
Später kann ich mit MoveWindow() die Position verändern, aber dazu brauche ich das hwnd des Fensters.
Für die MessageBox() habe ich weder eine CreateWindow() Funktion, noch kenne ich das hwnd.
Selbst wenn ich mit FindWindow() das Handle der MessageBox() finden kann, geht das erst wenn sie schon sichtbar ist, sprich sie würde in der Mitte auftauchen und ich könnte sie dann verschieben, aber das sieht besch.... aus.
Obendrein funktioniert FindWindow() nicht mehr, wenn es mehrere MessageBox()en gleichzeitig auf dem Bildschirm gibt. Da würde ich dem User wahrscheinlich Meldungen aus anderen Programmen rumschieben, das gefällt dem bestimmt nicht.
 
Oje ...... wenn MCoder keine Lösung kennt, dann gibt es keine.
Da muss ich statt MessageBox() mein eigenes Popup schreiben.

Trotzdem danke für die Hilfe.
 
Is ja auch keingroßeraufwand^^

Obendrein funktioniert FindWindow() nicht mehr, wenn es mehrere MessageBox()en gleichzeitig auf dem Bildschirm gibt. Da würde ich dem User wahrscheinlich Meldungen aus anderen Programmen rumschieben, das gefällt dem bestimmt nicht.

Schwachsinn oder GetForgroundWindow oder wie sie heißt mit dieser könntest du die messagebox nen paar milisekunden nach der erstellung unkonpliziert verschieben.
Ich glaube es ist sogar möglich die MessageBox erst invisible anzeigen zu lassen hate ich irgendwo mal gelesen.
 
Zurück