Esempio n. 1
0
        private static DialogMenu CreateEx(BinaryReader rdr)
        {
            List <MenuExTemplateItem> itemTs = new List <MenuExTemplateItem>();

            MenuExTemplateHeader header = new MenuExTemplateHeader(rdr);
            // header.wOffset is bytes offset from the wOffset member
            // so if it's 4 then just ignore it since those 4 bytes are taken up by the dwHelpId member
            // if it's less than 4, throw
            int advance = header.wOffset - 4;

            if (advance < 0)
            {
                throw new ResourceDataException("Invalid MenuExTemplateHeader wOffset value");
            }
            rdr.ReadBytes(advance);

            while (rdr.BaseStream.Position < rdr.BaseStream.Length)
            {
                MenuExTemplateItem itemT = new MenuExTemplateItem(rdr);

                itemTs.Add(itemT);
            }

            DialogMenuItem root = new DialogMenuItem("Root");

            Int32 i = 0;

            BuildMenuEx(root, itemTs, ref i);

            return(new DialogMenu(root));
        }
Esempio n. 2
0
        private static void BuildMenuEx(DialogMenuItem current, List <MenuExTemplateItem> itemTs, ref Int32 pos)
        {
            for (int i = pos; i < itemTs.Count; i++)
            {
                MenuExTemplateItem itemT = itemTs[i];

                DialogMenuItem item = new DialogMenuItem(itemT.szText);

                if (HasChildren(itemT))
                {
                    i++;
                    BuildMenuEx(item, itemTs, ref i);
                }

                current.Children.Add(item);

                if (IsLast(itemT))
                {
                    return;
                }
            }
        }
Esempio n. 3
0
 private static Boolean IsLast(MenuExTemplateItem itemT)
 {
     return((itemT.bResInfo & MenuExTemplateItemInfo.LastItem) == MenuExTemplateItemInfo.LastItem);
 }
Esempio n. 4
0
 private static Boolean HasChildren(MenuExTemplateItem itemT)
 {
     return((itemT.bResInfo & MenuExTemplateItemInfo.HasChildren) == MenuExTemplateItemInfo.HasChildren);
 }