title: What are the possible values for CreateParams.Style?
body: <p>So, I've been playing with trying to create an AppBar program I'm making.  Now, the program itself is actually quite simple but I had to borrow some code from a CodeProject project to make it an AppBar.</p>
  
  <p>So, my code is the following:</p>
  
  <pre><code> public partial class Form1 : Form
  {
      public Form1()
      {
          InitializeComponent();
      }
  
      private void Form1_Load(object sender, EventArgs e)
      {
  
      }
  
      [StructLayout(LayoutKind.Sequential)]
      struct RECT
      {
          public int left;
          public int top;
          public int right;
          public int bottom;
      }
  
      [StructLayout(LayoutKind.Sequential)]
      struct APPBARDATA
      {
          public int cbSize;
          public IntPtr hWnd;
          public int uCallbackMessage;
          public int uEdge;
          public RECT rc;
          public IntPtr lParam;
      }
  
      enum ABMsg : int
      {
          ABM_NEW = 0,
          ABM_REMOVE,
          ABM_QUERYPOS,
          ABM_SETPOS,
          ABM_GETSTATE,
          ABM_GETTASKBARPOS,
          ABM_ACTIVATE,
          ABM_GETAUTOHIDEBAR,
          ABM_SETAUTOHIDEBAR,
          ABM_WINDOWPOSCHANGED,
          ABM_SETSTATE
      }
      enum ABNotify : int
      {
          ABN_STATECHANGE = 0,
          ABN_POSCHANGED,
          ABN_FULLSCREENAPP,
          ABN_WINDOWARRANGE
      }
      enum ABEdge : int
      {
          ABE_LEFT = 0,
          ABE_TOP,
          ABE_RIGHT,
          ABE_BOTTOM
      }
  
      private bool fBarRegistered = false;
      private int uCallBack;
      private int whereToPin;
  
      [DllImport("SHELL32", CallingConvention = CallingConvention.StdCall)]
      static extern uint SHAppBarMessage(int dwMessage, ref APPBARDATA pData);
      [DllImport("USER32")]
      static extern int GetSystemMetrics(int Index);
      [DllImport("User32.dll", ExactSpelling = true,
          CharSet = System.Runtime.InteropServices.CharSet.Auto)]
      private static extern bool MoveWindow
          (IntPtr hWnd, int x, int y, int cx, int cy, bool repaint);
      [DllImport("User32.dll", CharSet = CharSet.Auto)]
      private static extern int RegisterWindowMessage(string msg);
  
      private void RegisterBar()
      {
          APPBARDATA abd = new APPBARDATA();
          abd.cbSize = Marshal.SizeOf(abd);
          abd.hWnd = this.Handle;
          if (!fBarRegistered)
          {
              uCallBack = RegisterWindowMessage("AppBarMessage");
              abd.uCallbackMessage = uCallBack;
  
              uint ret = SHAppBarMessage((int)ABMsg.ABM_NEW, ref abd);
              fBarRegistered = true;
  
              ABSetPos();
          }
          else
          {
              SHAppBarMessage((int)ABMsg.ABM_REMOVE, ref abd);
              fBarRegistered = false;
          }
      }
  
      private void ABSetPos()
      {
          APPBARDATA abd = new APPBARDATA();
          abd.cbSize = Marshal.SizeOf(abd);
          abd.hWnd = this.Handle;
          abd.uEdge = whereToPin;
  
          if (abd.uEdge == (int)ABEdge.ABE_LEFT || abd.uEdge == (int)ABEdge.ABE_RIGHT)
          {
              abd.rc.top = 0;
              abd.rc.bottom = SystemInformation.PrimaryMonitorSize.Height;
              if (abd.uEdge == (int)ABEdge.ABE_LEFT)
              {
                  abd.rc.left = 0;
                  abd.rc.right = Size.Width;
              }
              else
              {
                  abd.rc.right = SystemInformation.PrimaryMonitorSize.Width;
                  abd.rc.left = abd.rc.right - Size.Width;
              }
  
          }
          else
          {
              abd.rc.left = 0;
              abd.rc.right = SystemInformation.PrimaryMonitorSize.Width;
              if (abd.uEdge == (int)ABEdge.ABE_TOP)
              {
                  abd.rc.top = 0;
                  abd.rc.bottom = Size.Height;
              }
              else
              {
                  abd.rc.bottom = SystemInformation.PrimaryMonitorSize.Height;
                  abd.rc.top = abd.rc.bottom - Size.Height;
              }
          }
  
          SHAppBarMessage((int)ABMsg.ABM_QUERYPOS, ref abd);
  
          switch (abd.uEdge)
          {
              case (int)ABEdge.ABE_LEFT:
                  abd.rc.right = abd.rc.left + Size.Width;
                  break;
              case (int)ABEdge.ABE_RIGHT:
                  abd.rc.left = abd.rc.right - Size.Width;
                  break;
              case (int)ABEdge.ABE_TOP:
                  abd.rc.bottom = abd.rc.top + 100;
                  break;
              case (int)ABEdge.ABE_BOTTOM:
                  abd.rc.top = abd.rc.bottom - Size.Height;
                  break;
          }
  
          SHAppBarMessage((int)ABMsg.ABM_SETPOS, ref abd);
          MoveWindow(abd.hWnd, abd.rc.left, abd.rc.top,
                  abd.rc.right - abd.rc.left, abd.rc.bottom - abd.rc.top, true);
      }
  
      protected override void WndProc(ref System.Windows.Forms.Message m)
      {
          if (m.Msg == uCallBack)
          {
              switch (m.WParam.ToInt32())
              {
                  case (int)ABNotify.ABN_POSCHANGED:
                      ABSetPos();
                      break;
              }
          }
  
          base.WndProc(ref m);
      }
  
      protected override System.Windows.Forms.CreateParams CreateParams
      {
          get
          {
              CreateParams cp = base.CreateParams;
              cp.Style &amp;= (~0x00C00000); // WS_CAPTION
              cp.Style &amp;= (~0x00800000); // WS_BORDER
              cp.ExStyle = 0x00000080 | 0x00000008; // WS_EX_TOOLWINDOW | WS_EX_TOPMOST
              return cp;
          }
      }
  
      private void button1_Click(object sender, EventArgs e)
      {
          whereToPin = (int)ABEdge.ABE_LEFT;
          RegisterBar();
      }
  
      private void button2_Click(object sender, EventArgs e)
      {
          whereToPin = (int)ABEdge.ABE_RIGHT;
          RegisterBar();
      }
  }
  </code></pre>
  
  <p>My two questions are:
  What are the possible values cp.Style and how do those values effect the display of the AppBar?  (The code to which I refer to is located in the System.Windows.Forms.CreateParams override)</p>
  
  <p>I see they are values such as (~0x00C00000) but I have no idea how they work beyond those specific values and can't seem to find any enumeration of different values.  </p>
  
  <p>I'm a rather new, self teaching, programmer who does well by taking examples and molding them to my own uses.  Thanks in advance for any help you can provide.</p>