Frage

Mein Programm hat mehrere threads.Ich bin mit messagebox anzeigen von Informationen für die Benutzer.Gibt es trotzdem (oder eine alternative zu Nachricht box), dass ich einem anderen thread aktualisieren/ändern der message-box anzeigen von text, während der message-box ist immer noch auf dem Bildschirm sichtbar und durch den Anwender?

War es hilfreich?

Lösung

Mit thread-spezifische Haken über GetCurrentThreadId() und SetWindowsHookEx(), Sie können Haken die Nachrichten, die MessageBox() erhält intern, als auch Zugriff auf das Dialogfeld main window handle, die dann erhält man Zugriff auf alle untergeordneten Steuerelemente des Dialogfelds.Sie können dann passen Sie das Dialogfeld und seine Kontrolle wie nötig.Diese Technik wird Häufig verwendet, für die Implementierung von self-closing Dialoge (vor MessageBoxTimeout() eingeführt wurde), passen Sie den text für die Schaltflächen, etc.

Andere Tipps

Wenn Sie mit standard-Win32-Nachricht box ich glaube nicht, dass es keine Möglichkeit der änderung der text, sobald die box ist bereits gezeigt (Sie geben ein modal message pump).

Ich würde vorschlagen, erstellen Sie Ihre eigenen Fenster, das hört Nachrichten/updates von Ihren anderen threads.So sind Sie im Steuerelement.

Ich glaube nicht, dass es einen direkten Weg, dies zu tun, werden Sie wahrscheinlich versuchen könnte, um das Fenster zu handhaben, aber das ist viel zu chaotisch.Ihre beste Wette ist, zu erstellen Sie Ihre eigenen Dialogfeld so, dass Sie haben Sie die volle Kontrolle über Sie.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top