Frage

Ich bin eine Windows CE-Anwendung in C ++ zu schreiben direkt die WINAPI Anwendung. In dieser Anwendung analysierte ich eine Textdatei, die nicht groß sein kann und somit, oder kann eine nicht während zur Last nehmen kann; und als ich Funktionalität Ladedateien über das drahtlose Netzwerk hinzufügen wird, dachte ich, es wäre am besten, einen Fortschrittsbalken hinzuzufügen.

Ihr Ziel ist, die Fortschrittsbalken in einem modalen Dialog anzuzeigen, wodurch es den Benutzer zu verhindern mit dem Hauptfenster in Wechselwirkung zu treten. Ein Thread wird dann erstellt das Laden im Hintergrund auszuführen, den Haupt-Thread Verlassen des GUI zu aktualisieren.

Allerdings mit EndDialog() verhindert ich zu dem Code zurück, die die Datei lädt, bis der Dialog geschlossen wurde. Offensichtlich mag ich den Dialog zeigen und und , um die Last zu laden, in regelmäßigen Abständen die Fortschritte aus dem Hintergrund-Thread zu aktualisieren. An diesem Punkt weiß ich nur zwei Möglichkeiten, dies zu umgehen:

  1. Erstellen Sie den Dialog CreateDialog verwenden, ändern Sie die Message-Handler-Nachrichten an den Dialog bezeichnet aufzunehmen, um das Hauptfenster deaktivieren und schließlich den Hintergrund-Thread erstellen.
  2. Erstellen des Hintergrund-Thread in einem aufgehängten Anfangszustand, erstellen Sie den Dialog mit DialogBoxParam entlang der Thread-ID-Übergeben, und beim Einfangen der WM_INITDIALOG den Faden wieder aufnehmen.

Obwohl jedes dieser beiden würde wahrscheinlich Arbeit (ich bin auf die zweite Option lehnt), ich bin gespannt, ob dies die Art und Weise Fortschrittsbalken sollen in einer Windows-Umgebung behandelt werden - oder, wenn es eine ist schlanke, clevere Art und Weise tun.

scroll top