Beispiel #1
0
        public VariantMap ReadVariantMap()
        {
            ResInfoHandle rh = ResourceUnsafeNativeMethods.FindResourceEx(
                neutralModule, "VMAP", "VMAP", 0);

            if (rh.IsInvalid)
            {
                throw new InvalidOperationException("VMAP resource not found.");
            }

            var stream = neutralModule.LoadResourceStream(rh);

            using (var reader = new BinaryReader(stream)) {
                var vmap = new VariantMap();
                vmap.Name  = reader.ReadAlignedPascalZString(4);
                vmap.Size  = reader.ReadAlignedPascalZString(4);
                vmap.Color = reader.ReadAlignedPascalZString(4);

                if (reader.BaseStream.Position != reader.BaseStream.Length)
                {
                    throw new Exception("Trailing unread data in VMAP.");
                }

                return(vmap);
            }
        }
Beispiel #2
0
        private bool LoadStringRes(SafeModuleHandle module, uint resId, out object value)
        {
            if (module.IsInvalid)
            {
                value = "<<MUI missing>>";
                return(false);
            }

            value = ResourceUnsafeNativeMethods.LoadString(module, resId);
            return(true);
        }
Beispiel #3
0
        private bool LoadRectRes(SafeModuleHandle module, uint resId, out object value)
        {
            if (module.IsInvalid)
            {
                value = "<<MUI missing>>";
                return(false);
            }

            string str = ResourceUnsafeNativeMethods.LoadString(module, resId);

            if (TryParseRectSpec(str, out RECT rect))
            {
                value = rect;
                return(true);
            }

            value = null;
            return(false);
        }
Beispiel #4
0
        private bool LoadBoolRes(SafeModuleHandle module, uint resId, out object value)
        {
            if (module.IsInvalid)
            {
                value = "<<MUI missing>>";
                return(false);
            }

            string str = ResourceUnsafeNativeMethods.LoadString(module, resId);

            if (str == "1" || string.Equals(str, "true", StringComparison.OrdinalIgnoreCase))
            {
                value = true;
                return(true);
            }
            if (str == "0" || string.Equals(str, "false", StringComparison.OrdinalIgnoreCase))
            {
                value = false;
                return(true);
            }

            value = null;
            return(true);
        }