Quantcast
Channel: MicroStation Programming Forum - Recent Threads
Viewing all articles
Browse latest Browse all 4331

[U15 C++] how to read DialogItemListRsc?

$
0
0

Hi everybody,

I have a DialogItemListRsc :

DialogItemListRsc  LSTITEMID_Reference =
 {
  {
   {{0, 0, 0, 0}, Separator, SEPARATORID_ReferenceAtlog,             ON, SEPARATOR_VERTICAL, "", ""},
   {{0, 0, 0, 0}, IconCmd,   ICONCMDID_ReferenceAttModeleEP, ENABLED|HIDDEN,                  0, "", ""},
   {{0, 0, 0, 0}, IconCmd,   ICONCMDID_ReferenceRetrouve, ENABLED|HIDDEN,                  0, "", ""},
   {{0, 0, 0, 0}, IconCmd,   ICONCMDID_ReferenceCentrage, ENABLED|HIDDEN,                  0, "", ""},
   {{0, 0, 0, 0}, IconCmd,   ICONCMDID_ReferenceRetour,  ENABLED|HIDDEN,                  0, "", ""},
   {{0, 0, 0, 0}, IconCmd,   ICONCMDID_ReferenceBascule, ENABLED|HIDDEN,                  0, "", ""},
   {{0, 0, 0, 0}, IconCmd,   ICONCMDID_ReferenceDepLibre, ENABLED|HIDDEN,                  0, "", ""},
   {{0, 0, 0, 0}, IconCmd,   ICONCMDID_ReferenceAttache, ENABLED|HIDDEN,                  0, "", ""},
  }
 };

How can I read it item by item?

because i try something like that :

DialogItemListRsc *diagRscP = NULL;
MSDialogP diagP=almDialog_find(DIALOGID_ReferenceFile,NULL)
if((diagRscP=(DialogItemListRsc*)Alm::Basic::Resource_load(0,RTYPE_DialogItemList,LSTITEMID_Reference))!=NULL)
{
 for(int i=0;i<8;i++)
  {
   if(i != 4)
   {
    DialogItemRsc *ItemRscP = NULL;
    ItemRscP = &diagRscP->itemList[0]+i*sizeof(DialogItemRsc); // first ok but second fail
    mdlDialog_itemLoad(diagP, ItemRscP, NULL, mdlSystem_getCurrMdlDesc(), -1, NULL);
    mdlDialog_itemShow(diagP,ItemRscP->itemIndex);
    mdlDialog_itemDraw(diagP,ItemRscP->itemIndex);
   }
  }
}

But maybe there is a better way ?

I think this line is bad :

 ItemRscP = &diagRscP->itemList[0]+i*sizeof(DialogItemRsc); // first ok but second fail

Thanks for your help

Rgdt

Arnaud


Viewing all articles
Browse latest Browse all 4331

Trending Articles