CRichEditCtrl中實現查詢功能

2021-04-07 09:44:46 字數 1306 閱讀 8370

在我的乙個程式中,需要提供類似於記事本的查詢功能。如圖:

我寫此文的目的是想向初學mfc的朋友們介紹

如何通過cricheditctrl來實現文字查詢

如何在窗體間傳送訊息

實現文字查詢功能,大致分為以下幾步:

建立乙個包含有cricheditctrl的窗體資源以及該窗體對應的處理類

建立乙個錄入查詢文字的窗體資源以及該窗體對應的處理類

處理文字查詢的訊息傳遞

處理文字查詢

建立乙個包含有cricheditctrl的窗體資源以及該窗體對應的處理類

public:

....

cricheditctrl m_richedit;

建立乙個錄入查詢文字的窗體資源以及該窗體對應的處理類

再新建乙個窗體資源,如圖:

開啟classwizard,建立乙個繼承於cdialog的雷cfinddlg。

處理文字查詢的訊息傳遞

首先在系統的全域性標頭檔案中,定義傳送查詢命令的訊息

#define wm_findmessage (wm_user + 1)

在cfinddlg的查詢按鈕的查詢事件中,傳送wm_findmessage

void cknfinddlg::onbnclickedfindbutton()

在這個自定義的訊息傳遞中,我們通過wparam來傳遞查詢字串的位址。

在ctestdlg的.h檔案中,宣告wm_findmessage的處理函式

afx_msg lresult onfindmessage(wparam wparam, lparam lparam);

在ctextdlg的.cpp檔案中,宣告wm_findmessage的訊息處理

begin_message_map(ctestdlg,cdialog)

on_message(wm_findmessage,onfindmessage)

end_message_map

處理文字查詢

lresult ctestdlg::onfindmessage(wparam wparam, lparam lparam)

else

return 0;

}這段查詢**中如果要加上大小寫匹配和全字匹配,相應的**應該寫為:

......

findpos = this->m_richedit.findtext(fr_down | fr_matchcase | fr_wholeword, &f);

......

其中不足的地方,還望路過的高手多多指教。

本人的qq為64528619,希望能夠認識更多熱愛程式設計的朋友!

CRichEditCtrl 超文字編輯

一.常見問題 a.可以編譯,不能執行的 afxinitrichedit 此句不要忘了加 b.公升級預設的riched版本 預設的有一些bug 如 可在initinstance中新增 loadlibrary riched20.dll 最後注意 freelibrary 如果是cricheditview基...

CRichEditCtrl 超文字編輯

一.常見問題 a.可以編譯,不能執行的 afxinitrichedit 此句不要忘了加 b.公升級預設的riched版本 預設的有一些bug 如 可在initinstance中新增 loadlibrary riched20.dll 最後注意 freelibrary 如果是cricheditview基...

關於CRicheditctrl分頁列印問題

研究了好久,終於解決了,可以支援cricheditctrl列印。void printrich zeromemory di,sizeof di di.cbsize sizeof docinfo di.lpszdocname t test di.lpszoutput t c users desktop ...