CRichEditCtrl的EN_PROTECTED这个Notify,是送给它的父窗口的,但我发现在CRichEditView中,CRichEditCtrl的父窗口并不是CRichEditView,如何捕获这个Notify?

解决方案 »

  1.   

    C*View:
    *.h中:afx_msg void OnProtected(NMHDR* pNMHDR, LRESULT* pResult);*.cpp:
    BEGIN_MESSAGE_MAP(C*View, CRichEditView)
    //{{AFX_MSG_MAP(C*View)
              //}}AFX_MSG_MAP
    // Standard printing commands
            ON_NOTIFY_REFLECT(EN_PROTECTED , OnProtected)
    END_MESSAGE_MAP()void C*View::OnProtected(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    ENPROTECTED* pENPROTECTED = (ENPROTECTED* )pNMHDR;          //Add your proccessing codes. // Returning non zero will disallow change
    *pResult = TRUE;
    }//Set the Selected string would be protected.
    void C*View::**(...)
    {
    CHARFORMAT cf;
    //pView point your view.
    this->GetRichEditCtrl ().GetSelectionCharFormat(cf);
    cf.dwMask = CFM_PROTECTED;
    ///! Disallowance user to modify the string.
    //cf.dwEffects = CFE_PROTECTED;
    this->GetRichEditCtrl().SetSel(ft.chrgText);
    this->GetRichEditCtrl ().SetSelectionCharFormat(cf);
    }
    Please try it.