在我的乙個程式中,需要提供類似於記事本的查詢功能。如圖:
我寫此文的目的是想向初學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 ...