private void EhFileMonikerChanged(IMoniker fileMoniker) { if (null == _document) { return; } // see Brockschmidt, Inside Ole 2nd ed., p.998 // TODO we must pimp up this function RunningObjectTableHelper.ROTUnregister(ref _documentMonikerRotCookie); _documentMoniker = null; if (null != fileMoniker) { Ole32Func.CreateItemMoniker("!", DataObjectHelper.NormalStringToMonikerNameString(_document.Name), out var itemMoniker); if (null != itemMoniker) { fileMoniker.ComposeWith(itemMoniker, false, out var compositeMoniker); if (null != compositeMoniker) { _documentMoniker = compositeMoniker; RunningObjectTableHelper.ROTRegisterAsRunning(_documentMoniker, this, ref _documentMonikerRotCookie, typeof(IOleObject)); } } } SendAdvise_Renamed(); }
private IMoniker CreateNewDocumentMoniker() { // create the moniker on the fly IMoniker documentMoniker = null; var fileMoniker = _comManager.FileComObject.FileMoniker; if (null != fileMoniker) { Ole32Func.CreateItemMoniker("!", DataObjectHelper.NormalStringToMonikerNameString(_graphDocumentName), out var itemMoniker); if (null != itemMoniker) { fileMoniker.ComposeWith(itemMoniker, false, out documentMoniker); } } return(documentMoniker); }