2011-04-13 74 views
0

我有一個應用程序必須根據一些輸入數據計算一些數字。這些數據可以來自文件,也可以手動輸入(只有5-6個值)。我想提出一個對話框,基本上提出「你想從文件加載數據還是手動輸入?」。如果選擇「加載」,我想顯示一個文件打開對話框,然後解析所選文件以提取相關數據。如果選擇「手動」,我想提供一個自定義的CDialog子類,用戶可以在其中輸入將從數據文件中提取的相同數據。在Visual C++中順序對話框的最佳做法是什麼?

我的主要問題是什麼被認爲是串在一起的最佳做法?

我應該像這樣按順序調用對話框嗎?

// 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和從內sublasses事件處理程序調用的CFileDialog & CManualEntryDialog?

+0

一個對話框和麪板/選項卡兩種輸入類型有什麼問題? (或加載在同一個對話框中的用戶控件,如果你想真正劃分它)[只是好奇] – 2011-04-13 16:03:40

+0

沒有錯,除了我不知道該怎麼做。 – Andrew 2011-04-13 16:08:36

+0

我應該提到這是MFC,而不是.NET。 – Andrew 2011-04-13 16:13:20

回答

1

看來,至少你的用戶的顯著一部分將瞭解有關的數字;他們不是「神奇」的。因此,加載後顯示它們是有意義的。您可以很好地將其與手動輸入選項集成。

設計一個帶有6個輸入欄的對話框。添加一個填充這些字段的「加載」按鈕,但不要從那裏繼續。這允許用戶驗證並可能修改這些值。 (當他需要輸入文件中的5個值中的4個時有用)。

在6個輸入字段周圍使用組框控件,並在外部加載/確定/取消按鈕。這表明三個按鈕適用於整個組。

這種方法的UX優勢在於它更加開放。您不會強迫用戶選擇如何與應用程序進行交互。在這種複雜程度下,不可能壓倒目標受衆。

+0

這就是我根據上面Boaz Yaniv的評論結束的解決方案。我添加了一個「導入...「按鈕彈出CFileDialog,然後將文件名提供給解析器對象,然後使用文件中的數據更新原始對話框的字段,用戶仍然必須點擊OK接受數據。 – Andrew 2011-04-14 18:17:13

相關問題