首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

MFC 取得 CEdit 第一行文字作為檔案標題的實作方法

     編輯:程式設計疑難解答

需求描述

在 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 說明

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「首行成檔名」的使用者體驗。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved