2013-04-21 12 views
0

Как бы вы хотели дать пользователю возможность изменить имя файла thestream с помощью C++ MFC. Я хотел бы добавить Edit Control Box, который даст пользователю возможность вводить имя файла перед нажатием кнопки save. Это мой текущий код, любая обратная связь будет принята с благодарностью.Запрос пользователя на ввод имени файла, созданного с использованием потока C++ MFC

void CECET_MFC_Dialog_Based_IntroDlg::OnBnClickedSave() 
    { 
    UpdateData(true); 

    ofstream myfile ("Save_Random.xls"); 
    if (myfile.is_open()) 
    { 
    myfile << "This is the 1st line.\n" << endl; 

    for(int index=0; index<100; index++){ // samples to create 
    myfile << setprecision(4) << dblArray[index] << endl; 
    } 

    myfile << "This is another line.\n"; 
    myfile << "Max = " << rndMax << endl; 
    myfile << "Min = " << rndMin << endl; 
    myfile << "Mean = " << Final_Avg << endl; 
    myfile.close(); 
    } 
    else cout << "Unable to open file"; 

    UpdateData(false); 
} 

ответ

1

Вы добавляете элемент управления редактирования так же, как и любой другой, - перетащите его из панели инструментов в свой диалог. Возможно, что более важно, вы обычно хотите поместить рядом с ним кнопку обзора, чтобы пользователь мог найти нужную папку/имя файла. Код для этой кнопки выглядит примерно так:

void CYourDlg::OnBrowseButton() { 
    UpdateData(); 

    CFileDialog dlg(false, NULL, NULL, OFN_OVERWRITEPROMPT); 

    if (dlg.DoModal()) 
     m_dest_file = dlg.GetPathName(); 
    UpdateData(false); 
} 

Затем, когда пользователь нажимает кнопку любой (или пункт меню и т.д.), чтобы вы запись в файл, вы делаете что-то вроде этого:

std::ofstream myfile(m_dest_file); 
// write the data 

Я предположил, что вы связали элемент управления редактирования с CString с именем m_dest_file. Очевидно, вы можете выбрать имя по вашему выбору, но (конечно) вам нужно использовать одно и то же имя для обоих мест.