在 MFC 對話框程式中,點擊儲存按鈕時,將 CEdit 控制項的第一行文字作為 CFileDialog 的預設檔名,類似 Word 的行為。
void CApp2Dlg::OnButton1()
{
// 1. 讀取第一行
char buffer[201] = {0};
int n = m_edit1.GetLine(0, buffer, 100); // 索引 0 為第一行
buffer[n] = '\0'; // 確保字串結尾
// 2. 彈出儲存對話框,預設檔名帶入首行文字
CFileDialog saveFile(
FALSE, // Save As 模式
_T(".txt"), // 預設副檔名
buffer, // 預設檔名
OFN_CREATEPROMPT | OFN_PATHMUSTEXIST | OFN_OVERWRITEPROMPT,
_T("Text Files (*.txt)|*.txt|All Files (*.*)|*.*||")
);
if (saveFile.DoModal() == IDOK) {
CString filePath = saveFile.GetPathName();
// TODO: 實際寫入檔案邏輯
}
}
| API | 用途 |
|---|---|
CEdit::GetLine(int index, LPTSTR buf, int maxLen) | 取得指定行文字,index=0 為第一行,回傳字元數 |
CFileDialog(BOOL bOpen, LPCTSTR ext, LPCTSTR name, DWORD flags, LPCTSTR filter) | 第三參數 name 為預設檔名 |
CString strName = buffer;
static TCHAR* badChars = _T("\\/:*?\"<>|");
for (int i = 0; badChars[i]; ++i) strName.Replace(badChars[i], _T(''));
// 將 strName 傳給 CFileDialog
此法簡單直接,完美複製 Word「首行成檔名」的使用者體驗。