You can use the kSetPrimaryTextFlowCmdBoss to make a textframe present on a parent page as primary textframe. The itemlist of this command would be set with the kMasterPagesBoss and the IFlowData interface needs to be set with the story ref. The following code should work
UIDRef GetStoryFromFrame(UIDRef& frameRef){
UIDRef toReturn = UIDRef::gNull;
do
{
if(frameRef == UIDRef::gNull)
break;
InterfacePtr<IGraphicFrameData> iGraphicFrameData(frameRef, UseDefaultIID());
ASSERT(iGraphicFrameData);
if(!iGraphicFrameData)
break;
InterfacePtr<IMultiColumnTextFrame> iMultiColumnTextFrame(frameRef.GetDataBase(),iGraphicFrameData->GetTextContentUID(), UseDefaultIID());
ASSERT(iMultiColumnTextFrame);
if(!iMultiColumnTextFrame)
break;
InterfacePtr<ITextModel> iTextModel(iMultiColumnTextFrame->QueryTextModel());
ASSERT(iTextModel);
if(!iTextModel)
break;
toReturn = ::GetUIDRef(iTextModel);
}while(kFalse);
return toReturn;
}
ErrorCode SetFramePrimaryTextFrame(UIDRef &frameRef){
ErrorCode status = kFailure;
do{
if(frameRef == UIDRef::gNull)
break;
InterfacePtr<IHierarchy> iHierarchy(frameRef, UseDefaultIID());
ASSERT(iHierarchy);
if (!iHierarchy)
break;
InterfacePtr<ISpread> iSpread(Utils<IPasteboardUtils>()->QuerySpread(iHierarchy));
ASSERT(iSpread);
if (!iSpread)
break;
if(!Utils<ILayoutUtils>()->IsAMaster(::GetUID(iSpread), ::GetDataBase(iSpread)))
break;
UIDRef storyRef = GetStoryFromFrame(frameRef);
if(storyRef == UIDRef::gNull)
break;
InterfacePtr<ICommand> iCommand(CmdUtils::CreateCommand(kSetPrimaryTextFlowCmdBoss));
ASSERT(iCommand);
if (!iCommand)
break;
iCommand->SetItemList(::GetUIDRef(iSpread));
InterfacePtr<IFlowData> iFlowData(iCommand, UseDefaultIID());
ASSERT(iFlowData);
if (!iFlowData)
break;
iFlowData->SetPrimaryTextFlowStory(storyRef.GetUID());
CmdUtils::ProcessCommand(iCommand);
}while(kFalse);
return status;
}
-Manan