Как изменить вызов ShowD) TaskDialog, чтобы блокировать и возвращать значение при закрытии? - PullRequest
0 голосов
/ 13 мая 2010

Я использую реализацию TaskDialog в WindowsAPICodePack, но мне жаль, что мне приходится прислушиваться к обработчикам нажатий на его кнопках даже для более простых реализаций. Я хотел бы преобразовать / обернуть его так, чтобы, как старый MessageBox, он блокировался до закрытия, а затем возвращал значение на основе того, что было сделано. Есть ли что-нибудь, что я могу прочитать для основ о том, как это сделать? Я просто понятия не имею, с чего начать, потому что, по общему признанию, я не очень хорошо знаком с основами Win32.

1 Ответ

0 голосов
/ 16 мая 2010

В случае, если это кому-то помогает, после некоторого чтения я выяснил, что вызов Show уже блокируется. Чтобы вернуть значение, я реализовал базовый класс ExtendedTaskDialog<T>, который содержит TaskDialog и содержит вспомогательный метод Show(Window) для назначения родителя TaskDialog и абстрактный метод public T Show(Window). Фактические диалоги вытекают из этого и выводят свое собственное перечисление в качестве базового типа, например MyDialog : ExtendedTaskDialog<MyDialogResult>. Затем, внутренне, обработчики нажатия кнопок MyDialog устанавливают результат перед вызовом метода Close внутреннего TaskDialog.

...