Какова наилучшая практика для последовательных диалогов в Visual C ++? - PullRequest
0 голосов
/ 13 апреля 2011

У меня есть приложение, которое должно рассчитать некоторые числа на основе некоторых входных данных.Эти данные могут быть получены из файла или могут быть введены вручную (это всего 5-6 значений).Я хочу представить диалоговое окно, которое в основном спрашивает: «Вы хотите загрузить данные из файла или ввести их вручную?».Если выбрано «загрузить», я хочу открыть диалоговое окно открытия файла, а затем проанализировать выбранный файл, чтобы извлечь соответствующие данные.Если выбрано «manual», я хочу представить пользовательский подкласс CDialog, где пользователь может вводить те же данные, которые были бы извлечены из файла данных.

Мой основной вопрос - что считается наилучшей практикой длясвязывая это вместе?

Должен ли я вызывать диалоговые окна последовательно, как это?

// pseudocode
void foo(){
    status = MessageBox("Do you want to enter data from file?");

    if (status == YES) {
        filename = CFileDialog();
        inputdata = processInputFile(filename);
    }
    else {
        CManualEntryDialog.doModal();
        inputdata = CManualEntryDialog.data;
    }

    // calculate output data from input data...
}

Или я должен создать подкласс CDialog и вызвать CFileDialog & CManualEntryDialog из этих обработчиков событий подклассов?

Ответы [ 2 ]

1 голос
/ 14 апреля 2011

Кажется, что хотя бы значительная часть ваших пользователей поймет вовлеченные числа; они не "магические". Поэтому имело бы смысл показывать их после загрузки. Вы можете легко интегрировать это с опцией ручного ввода.

Создайте один диалог с 6 полями ввода. Добавьте кнопку «Загрузить», которая заполняет эти поля, но не продолжает оттуда. Это позволяет пользователю проверить и, возможно, изменить эти значения. (Полезно, когда ему нужно 4 из 5 значений во входном файле).

Используйте элемент управления группового блока вокруг 6 полей ввода с кнопками Load / Ok / Cancel снаружи. Это дает понять, что три кнопки применяются ко всей группе.

Преимущество этого подхода в том, что он более открыт для исследования. Вы не заставляете пользователя выбирать, как взаимодействовать с вашим приложением. И с таким уровнем сложности, это вряд ли сокрушит вашу целевую аудиторию.

0 голосов
/ 14 апреля 2011

Для последовательных диалогов я бы рекомендовал процесс мастера, используя классы CPropertyPage и CPropertySheet.

Вот пример: http://www.dotnetheaven.com/Uploadfile/bulentozkir/pp_wizard04212005064904AM/pp_wizard.aspx

http://www.informit.com/library/content.aspx?b=Visual_C_PlusPlus&seqNum=79

...