Я пишу приложение Windows CE на C ++, непосредственно применяя WINAPI. В этом приложении я анализирую текстовый файл, который может быть или не быть большим и, следовательно, может или не может занять некоторое время для загрузки; и поскольку я добавлю функциональность для загрузки файлов по беспроводной сети, я решил, что было бы лучше добавить индикатор выполнения.
Моя цель состоит в том, чтобы отображать индикатор выполнения в модальном диалоговом окне, тем самым предотвращая взаимодействие пользователя с основным окном. Затем создается поток для выполнения загрузки в фоновом режиме, оставляя основной поток для обновления графического интерфейса.
Однако использование EndDialog()
не позволяет мне вернуться к коду, который загружает файл, пока диалоговое окно не будет закрыто. Очевидно, я хочу показать диалоговое окно и , а затем загрузить загрузку, периодически обновляя прогресс из фонового потока. На данный момент я знаю только два варианта, чтобы обойти это:
- Создайте диалог, используя
CreateDialog
, измените обработчик сообщений, чтобы он соответствовал сообщениям, предназначенным для диалога, отключите главное окно и, наконец, создайте фоновый поток.
-
Создайте фоновый поток в приостановленном начальном состоянии, создайте диалоговое окно, используя
DialogBoxParam
, передавая идентификатор потока, и при захвате WM_INITDIALOG
возобновите поток.
Хотя любой из этих двух вариантов, вероятно, сработает (я склоняюсь ко второму варианту), мне любопытно, должен ли этот способ обрабатывать индикаторы выполнения в среде Windows - или если есть более тонкий и умный способ сделать это.