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

Visual C++ CFindReplaceDialog 查找替換對話框正確使用姿勢

     編輯:程式設計疑難解答

常見誤區

直接構造 CFindReplaceDialog 物件並呼叫 DoModal(),導致對話框無法建立或立即關閉。

正確流程:非模態對話框

CFindReplaceDialog 衍生自 CCommonDialog,屬於非模態對話框,必須採用「建立→顯示→訊息迴圈處理」模式。

關鍵步驟

  1. 建立對話框:使用 Create() 而非 DoModal()。
    CFindReplaceDialog* pDlg = new CFindReplaceDialog();
    pDlg->Create(TRUE, _T("尋找內容"), _T(""), FR_DOWN, this);
    
  2. 顯示對話框:pDlg->ShowWindow(SW_SHOW);
  3. 主視窗處理尋找/替換訊息:在主視窗類別的訊息對應表中加入:
    ON_REGISTERED_MESSAGE(WM_FINDREPLACE, OnFindReplace)
    
    處理函式原型:afx_msg LRESULT OnFindReplace(WPARAM wParam, LPARAM lParam);
  4. 處理函式範例:
    LRESULT CMainFrame::OnFindReplace(WPARAM, LPARAM lParam)
    {
        CFindReplaceDialog* pDlg = CFindReplaceDialog::GetNotifier(lParam);
        if (pDlg->IsTerminating()) { /* 使用者關閉對話框 */ }
        else if (pDlg->FindNext()) { /* 執行尋找下一個 */ }
        else if (pDlg->ReplaceCurrent()) { /* 替換當前 */ }
        else if (pDlg->ReplaceAll()) { /* 全部替換 */ }
        return 0;
    }
    

參考資源

詳細實作可參考:CSDN 部落格範例

掌握非模態對話框的生命週期與訊息機制,即可順利整合尋找替換功能。

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