duilib中Richedit如何支持TextChanged

在duilib開發中,小夥伴會因爲CEditUI的各種問題,而轉爲使用CRichEditUI來代替。但是CRichEditUI控件卻不支持文字變化通知事件,下面通過簡單幾行代碼讓RichEdit支持文字變化事件。

在UIRichEdith.cpp文件中搜索::OnTxNotify,然後使用以下代碼替換此函數:

void CRichEditUI::OnTxNotify(DWORD iNotify, void *pv)
{
    switch(iNotify)
    { 
    case EN_CHANGE:
        {
            GetManager()->SendNotify(this, DUI_MSGTYPE_TEXTCHANGED);
            break;
        }
    case EN_DROPFILES:   
    case EN_MSGFILTER:   
    case EN_OLEOPFAILED:   
    case EN_PROTECTED:   
    case EN_SAVECLIPBOARD:   
    case EN_SELCHANGE:   
    case EN_STOPNOUNDO:   
    case EN_LINK:   
    case EN_OBJECTPOSITIONS:   
    case EN_DRAGDROPDONE:   
        {
            if(pv) 
            {   
                LONG nId =  GetWindowLong(this->GetManager()->GetPaintWindow(), GWL_ID);   
                NMHDR  *phdr = (NMHDR *)pv;   
                phdr->hwndFrom = this->GetManager()->GetPaintWindow();   
                phdr->idFrom = nId;   
                phdr->code = iNotify;  

                if(SendMessage(this->GetManager()->GetPaintWindow(), WM_NOTIFY, (WPARAM) nId, (LPARAM) pv))   
                {   
                }   
            }    
        }
        break;
    }
}

好了,需要的小夥伴趕緊試試吧!

duilib開源項目圈QQ羣:261675375
最新代碼託管地址:https://github.com/qdtroy/DuiLib_Ultimate

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章