What are the possible values for CreateParams.Style?
Here you go...
As per the OP's original query, there's also:
Related videos on Youtube
Josh
C# beginner who is learning how many others do, trial by fire! (Still a complete noobie)
Updated on June 14, 2022Comments
-
Josh almost 2 years
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.
So, my code is the following:
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 &= (~0x00C00000); // WS_CAPTION cp.Style &= (~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(); } }
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)
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.
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.