Пример #1
0
 /// <summary>Create instance of init control data with header and payload</summary>
 /// <param name="header">Header</param>
 /// <param name="data">Payload</param>
 public ControlInitData(MfcCtrlData header, Byte[] data)
 {
     this.ControlID  = header.ControlID;
     this.MessageID  = header.MessageID;
     this.DataLength = header.DataLength;
     this.Data       = data;
 }
Пример #2
0
        /// <summary>Get array of MFC dialog init data</summary>
        /// <returns>MFC dialog init data</returns>
        public IEnumerator <ResourceDialogInit.ControlInitData> GetEnumerator()
        {
            UInt32 padding        = 0;
            UInt32 headerDataSize = (UInt32)Marshal.SizeOf(typeof(MfcCtrlData));

            using (PinnedBufferReader reader = base.CreateDataReader())
                while (padding < reader.Length)
                {
                    MfcCtrlData header = reader.BytesToStructure <MfcCtrlData>(ref padding);
                    Byte[]      data   = reader.GetBytes(padding, (UInt32)header.DataLength);
                    padding += (UInt32)header.DataLength;

                    yield return(new ControlInitData(header, data));

                    if (padding + headerDataSize > reader.Length)
                    {
                        yield break;                        //TODO: В заключении, обычно, идут 2 байта. Но проверял пока только на DBaseTool
                    }
                }
        }