Hi<br /><br />I like to detect the selection change of page items (text or graphic frames). I implemented a doc change observer, but this doesn't work. The update method is called if I create a new page item for example. This means that the observer works, but not for the selection change. Maybe I have forgotten the right attachment.<br /><br />How can I detect the selection changes of page items?<br /><br />Here is my code where I attach my doc change observer.<br /><br />------------------------------------------------------------------- ------<br /><br />void CTabFlowDocChangesObserver::AttachDocument(IDocument* ipDocument)<br />{<br /> do {<br /> InterfacePtr<ISubject> ipDocSubject(ipDocument, UseDefaultIID());<br /> if (ipDocSubject == nil) break;<br /> if (!ipDocSubject->IsAttached(ISubject::kRegularAttachment, this, IID_IHIERARCHY_DOCUMENT, IID_ITABFLOWDOCCHANGESOBSERVER)) {<br /> ipDocSubject->AttachObserver(ISubject::kRegularAttac hment, this, IID_IHIERARCHY_DOCUMENT, IID_ITABFLOWDOCCHANGESOBSERVER);<br /> }<br /> if (!ipDocSubject->IsAttached(this, IID_IPATHSELECTIONDATA, IID_ITABFLOWDOCCHANGESOBSERVER)) {<br /> ipDocSubject->AttachObserver(this, IID_IPATHSELECTIONDATA, IID_ITABFLOWDOCCHANGESOBSERVER);<br /> }<br /> if (!ipDocSubject->IsAttached(this, IID_IPATHSELECTION, IID_ITABFLOWDOCCHANGESOBSERVER)) {<br /> ipDocSubject->AttachObserver(this, IID_IPATHSELECTION, IID_ITABFLOWDOCCHANGESOBSERVER);<br /> }<br /> if (!ipDocSubject->IsAttached(this, IID_IHIERARCHY, IID_ITABFLOWDOCCHANGESOBSERVER)) {<br /> ipDocSubject->AttachObserver(this, IID_IHIERARCHY, IID_ITABFLOWDOCCHANGESOBSERVER);<br /> }<br /> if (!ipDocSubject->IsAttached(this, IID_IPATHSELECTIONCHANGE, IID_ITABFLOWDOCCHANGESOBSERVER)) {<br /> ipDocSubject->AttachObserver(this, IID_IPATHSELECTIONCHANGE, IID_ITABFLOWDOCCHANGESOBSERVER);<br /> }<br /> if (!ipDocSubject->IsAttached(this, IID_IPATHSELECTIONDOCOBSERVER, IID_ITABFLOWDOCCHANGESOBSERVER)) {<br /> ipDocSubject->AttachObserver(this, IID_IPATHSELECTIONDOCOBSERVER, IID_ITABFLOWDOCCHANGESOBSERVER);<br /> }<br /> if (!ipDocSubject->IsAttached(this, IID_ISELECTIONFILTER, IID_ITABFLOWDOCCHANGESOBSERVER)) {<br /> ipDocSubject->AttachObserver(this, IID_ISELECTIONFILTER, IID_ITABFLOWDOCCHANGESOBSERVER);<br /> }<br /> if (!ipDocSubject->IsAttached(this, IID_IGEOMETRY_DOCUMENT, IID_ITABFLOWDOCCHANGESOBSERVER)) {<br /> ipDocSubject->AttachObserver(this, IID_IGEOMETRY_DOCUMENT, IID_ITABFLOWDOCCHANGESOBSERVER);<br /> }<br /><br /> if (!ipDocSubject->IsAttached(this, IID_ITRANSFORM_DOCUMENT, IID_ITABFLOWDOCCHANGESOBSERVER)) {<br /> ipDocSubject->AttachObserver(this, IID_ITRANSFORM_DOCUMENT, IID_ITABFLOWDOCCHANGESOBSERVER);<br /> }<br /><br /> if (!ipDocSubject->IsAttached(this, IID_IMOVEREFERENCEPOINTCMDDATA , IID_ITABFLOWDOCCHANGESOBSERVER)) {<br /> ipDocSubject->AttachObserver(this, IID_IMOVEREFERENCEPOINTCMDDATA , IID_ITABFLOWDOCCHANGESOBSERVER);<br /> }<br /> } while (kFalse);<br />}<br /><br />------------------------------------------------------------------- ------<br /><br />Is it correct to use a doc chnage observer?<br /><br />Have I to use a selection filter? How can I implement it if yes?<br /><br />Thanks for the support<br />Hans
↧