您可以截取EN_UPDATE指令並在收到該指令時重新格式化文本?唯一的問題是您不知道添加了哪些新數據。
儘管如此,您可能會發現使用自己的方法覆蓋CRichEditCtrl會更容易,並攔截您希望處理傳入數據的重要消息,然後調用父類的該函數的實現。這樣,每次的東西加到你正在執行的必要重新格式化...
編輯:爲了得到從的CRichEditCtrl類是很容易
class CMyRichEditCtrl : public CRicheditCtrl
{
DECLARE_DYNAMIC(CMyRichEditCtrl)
protected:
DECLARE_MESSAGE_MAP()
public:
CMyRichEditCtrl();
virtual ~CMyRichEditCtrl();
// ... Rest of implementation here
};
然後,您可以攔截消息映射信息如下...
ON_MESSAGE(EM_PASTESPECIAL, &CMyRichEditCtrl::OnPasteSpecial)
和處理程序看起來像這樣:
LRESULT CMyRichEditCtrl::OnPasteSpecial(WPARAM wParam, LPARAM lParam)
wParam是剪貼板格式,lParam包含NULL或REPASTESPECIAL結構。
然後您需要做的就是確保您的類是使用DoDataExchange函數接收所有消息並且可以輕鬆完成的類。
定義你的成員變量:
CMyRichEditCtrl m_MyRichEditCtrl;
,並添加以下的DoDataExchange:
DDX_Control(pDX, IDC_MYRICHEDIT, m_MyRichEditCtrl);
所有的郵件都會通過你實現的RichEditCtrl
路線可以攔截任何消息,包括WM_PASTE,這種方式...
來源
2010-01-19 11:10:27
Goz
在EN_UPDATE ... I g但是我們在控件中做了格式化,我們只想確保用戶不能輸入格式。 – 2010-01-19 11:19:22
關於「覆蓋CRichEditCtrl」,你可以進一步瞭解更多細節嗎?無論如何,這聽起來是更好的選擇。 – 2010-01-19 11:20:53
真棒回答,感謝您花時間。 – 2010-01-19 13:30:16