I'm getting an error for object does not contain a definition for WndProc (i.e base.WndProc)

0
using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Runtime.InteropServices;

using System.Windows.Forms;

namespace ConsoleApp5
{
  public class Program
  {
     protected virtual void WndProc(ref Message m)
     {
            const int WM_DEVICECHANGE = 0x0219; //see msdn site
            const int DBT_DEVICEARRIVAL = 0x8000;
            const int DBT_DEVICEREMOVALCOMPLETE = 0x8004;
            const int DBT_DEVTYPVOLUME = 0x00000002;


            if (m.Msg == WM_DEVICECHANGE)
            {
                DEV_BROADCAST_VOLUME vol = (DEV_BROADCAST_VOLUME)Marshal.PtrToStructure(m.LParam, typeof(DEV_BROADCAST_VOLUME));
                if ((m.WParam.ToInt32() == DBT_DEVICEARRIVAL) && (vol.dbcv_devicetype == DBT_DEVTYPVOLUME))
                {
                    MessageBox.Show(DriveMaskToLetter(vol.dbcv_unitmask).ToString());
                }
                if ((m.WParam.ToInt32() == DBT_DEVICEREMOVALCOMPLETE) && (vol.dbcv_devicetype == DBT_DEVTYPVOLUME))
                {
                    MessageBox.Show("usb out");
                }
            }
            base.WndProc(ref m);
        }
    

        [StructLayout(LayoutKind.Sequential)] //Same layout in mem
        public struct DEV_BROADCAST_VOLUME
        {
            public int dbcv_size;
            public int dbcv_devicetype;
            public int dbcv_reserved;
            public int dbcv_unitmask;
        }

        private static char DriveMaskToLetter(int mask)
        {
            char letter;
            string drives = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; //1 = A, 2 = B, 3 = C
            int cnt = 0;
            int pom = mask / 2;
            while (pom != 0)    // while there is any bit set in the mask shift it right        
            {
                pom = pom / 2;
                cnt++;
            }
            if (cnt < drives.Length)
                letter = drives[cnt];
            else
                letter = '?';
            return letter;
        }
    }
}
c#
visual-studio-2019
asked on Stack Overflow May 11, 2021 by Aishwarya Munuswamy • edited May 11, 2021 by Michael Rovinsky

0 Answers

Nobody has answered this question yet.


User contributions licensed under CC BY-SA 3.0